Mongoose是MongoDB的一个ODM,我有一个有趣的问题. 我想将mongoose.model方法别名化为简单模型.我甚至检查了别名: exports = Model = mongoose.model;console.log(Model === mongoose.model); // returns true 我已经为
我想将mongoose.model方法别名化为简单模型.我甚至检查了别名:
exports = Model = mongoose.model; console.log(Model === mongoose.model); // returns true
我已经为mongoose.Schema做了这个,它无缝地工作.
现在,当我使用别名的Model变量注册模式时:
Model('User', UserSchema);
我收到以下错误:
/node_modules/mongoose/lib/index.js:257 if (!this.modelSchemas[name]) { ^ TypeError: Cannot read property 'User' of undefined at Mongoose.model (/node_modules/mongoose/lib/index.js:257:25) at Object.<anonymous> (/app/models/user.js:20:1) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at controllers_path (/app.js:23:2) at Array.forEach (native)
但如果我使用普通形式,我绝对没有错误:
mongoose.model('User', UserSchema);
>这是Mongoose.js ODM中的错误还是我错过了什么?
当你调用mongoose.model(…)时,mongoose对象将被传递到模型函数中.当您通过别名调用该函数时,将设置为global而不是mongoose.如果你真的想这样做,你必须做以下事情:
var Model = mongoose.model.bind(mongoose);
这样,无论你怎么称呼模型,mongoose都会被传递给函数.