Generate GraphQL schema and resolvers automatically from Mongoose models — supports BSON types and advanced validation.
- Generates
.graphqltype definitions - Creates resolvers with status code-aware GraphQL errors
- Supports both JavaScript (CommonJS) and TypeScript
- Handles BSON/extended scalar types:
Decimal,Long,Date,UUID,Base64, etc.
npm install -D mongoose-graphql-codegen// models/User.js
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true, minlength: 6 },
roles: {
type: [String],
enum: ['user', 'admin', 'moderator'],
default: ['user']
},
status: {
type: String,
enum: ['active', 'inactive', 'banned'],
default: 'active'
},
lastLogin: Date
});
userSchema.pre('save', async function (next) {
if (!this.isModified('password')) return next();
const salt = await bcrypt.genSalt(10);
this.password = await bcrypt.hash(this.password, salt);
next();
});
userSchema.methods.comparePassword = async function (candidatePassword) {
return bcrypt.compare(candidatePassword, this.password);
};
module.exports = mongoose.model('User', userSchema);npx mongoose-graphql-codegennpx mongoose-graphql-codegen js=truenpx mongoose-graphql-codegen model=./models/User.js js=trueAfter generation:
graphql-codegen/
user/
User.graphql
UserResolver.js / .ts
index.ts
scalarResolvers.js / .ts
//<filename>.js
const { ApolloServer } = require('@apollo/server');
const {typeDefs,resolvers} = require('../graphql-codegen')
async function createApolloServer() {
const server = new ApolloServer({
typeDefs,
resolvers
});
await server.start();
return server;
}
module.exports = createApolloServer;
// server.js
const bodyParser = require('body-parser');
const { expressMiddleware } = require('@apollo/server/express4');
const createApolloServer = require('./graphql/server');
(async () => {
const apolloServer = await createApolloServer();
app.use('/graphql', bodyParser.json(), expressMiddleware(apolloServer));
})();
// Use in ApolloServer, Mercurius, Yoga, etc.--outDirsupport
© 2025 — Built with ❤️ for modern devs.