{"id":211,"hash":"d58d859ec38fb94b8e8852d993aa81bd69fc7bf47797d627e8cbd459d61f513e","pattern":"Cannot overwrite model once compiled Mongoose","full_message":"Not Sure what I'm doing wrong, here is my check.js\n\nvar db = mongoose.createConnection('localhost', 'event-db');\ndb.on('error', console.error.bind(console, 'connection error:'));\n\nvar a1= db.once('open',function(){\nvar user = mongoose.model('users',{ \n       name:String,\n       email:String,\n       password:String,\n       phone:Number,\n      _enabled:Boolean\n     });\n\nuser.find({},{},function (err, users) {\n    mongoose.connection.close();\n    console.log(\"Username supplied\"+username);\n    //doSomethingHere })\n    });\n\nand here is my insert.js\n\nvar mongoose = require('mongoose');\nmongoose.connect('mongodb://localhost/event-db')\n\nvar user = mongoose.model('users',{\n     name:String,\n     email:String,\n     password: String,\n     phone:Number,\n     _enabled:Boolean\n   });\n\nvar new_user = new user({\n     name:req.body.name,\n     email: req.body.email,\n     password: req.body.password,\n     phone: req.body.phone,\n     _enabled:false\n   });\n\nnew_user.save(function(err){\n    if(err) console.log(err); \n   });\n\nWhenever I'm trying to run check.js, I'm getting this error\n\nCannot overwrite 'users' model once compiled.\n\nI understand that this error comes due to mismatching of Schema, but I cannot see where this is happening ? I'm pretty new to mongoose and nodeJS.\n\nHere is what I'm getting from the client interface of my MongoDB: \n\nMongoDB shell version: 2.4.6 connecting to: test \n> use event-db \n  switched to db event-db \n> db.users.find() \n  { \"_id\" : ObjectId(\"52457d8718f83293205aaa95\"), \n    \"name\" : \"MyName\", \n    \"email\" : \"myemail@me.com\", \n    \"password\" : \"myPassword\", \n    \"phone\" : 900001123, \n    \"_enable\" : true \n  } \n>","ecosystem":"npm","package_name":"node.js","package_version":null,"solution":"The error is occurring because you already have a schema defined, and then you are defining the schema again.  Generally what you should do is instantiate the schema once, and then have a global object call it when it needs it.  \n\nFor example:\n\nuser_model.js\n\nvar mongoose = require('mongoose');\nvar Schema = mongoose.Schema;\n\nvar userSchema = new Schema({\n   name:String,\n   email:String,\n   password:String,\n   phone:Number,\n   _enabled:Boolean\n});\nmodule.exports = mongoose.model('users', userSchema);          \n\ncheck.js\n\nvar mongoose = require('mongoose');\nvar User = require('./user_model.js');\n\nvar db = mongoose.createConnection('localhost', 'event-db');\ndb.on('error', console.error.bind(console, 'connection error:'));\nvar a1= db.once('open',function(){\n  User.find({},{},function (err, users) {\n    mongoose.connection.close();\n    console.log(\"Username supplied\"+username);\n    //doSomethingHere \n  })\n});\n\ninsert.js\n\nvar mongoose = require('mongoose');\nvar User = require('./user_model.js');\n\nmongoose.connect('mongodb://localhost/event-db');\nvar new_user = new User({\n    name:req.body.name\n  , email: req.body.email\n  , password: req.body.password\n  , phone: req.body.phone\n  , _enabled:false \n});\nnew_user.save(function(err){\n  if(err) console.log(err); \n});","confidence":0.95,"source":"stackoverflow","source_url":"https://stackoverflow.com/questions/19051041/cannot-overwrite-model-once-compiled-mongoose","votes":222,"created_at":"2026-04-19T04:41:32.693558+00:00","updated_at":"2026-04-19T04:51:30.402173+00:00"}