当前位置 : 主页 > 网页制作 > Nodejs >

node.js – Mongoose模型别名错误

来源:互联网 收集:自由互联 发布时间:2021-06-16
Mongoose是MongoDB的一个ODM,我有一个有趣的问题. 我想将mongoose.model方法别名化为简单模型.我甚至检查了别名: exports = Model = mongoose.model;console.log(Model === mongoose.model); // returns true 我已经为
Mongoose是MongoDB的一个ODM,我有一个有趣的问题.

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

网友评论