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都会被传递给函数.
