繁体   English   中英

尝试填充时出现猫鼬“未注册架构”错误

[英]mongoose “Schema hasn't been registered” error when trying to populate

这是困扰我的错误:

err:  { MongooseError: Schema hasn't been registered for model "function model(doc, fields, skipId) {
  if (!(this instanceof model)) {
    return new model(doc, fields, skipId);
  }
  Model.call(this, doc, fields, skipId);
}".
Use mongoose.model(name, schema)
at NativeConnection.Connection.model (/Users/riordan/prog/tuts/reddice/server/node_modules/mongoose/lib/connection.js:968:11)
at getModelsMapForPopulate (/Users/riordan/prog/tuts/reddice/server/node_modules/mongoose/lib/model.js:3472:20)
at populate (/Users/riordan/prog/tuts/reddice/server/node_modules/mongoose/lib/model.js:3026:15)
at _populate (/Users/riordan/prog/tuts/reddice/server/node_modules/mongoose/lib/model.js:2994:5)
at Function.Model.populate (/Users/riordan/prog/tuts/reddice/server/node_modules/mongoose/lib/model.js:2954:5)
at Immediate.<anonymous> (/Users/riordan/prog/tuts/reddice/server/node_modules/mongoose/lib/query.js:1377:17)
at Immediate.<anonymous> (/Users/riordan/prog/tuts/reddice/server/node_modules/mquery/lib/utils.js:137:16)
at runCallback (timers.js:800:20)
at tryOnImmediate (timers.js:762:5)
at processImmediate [as _immediateCallback] (timers.js:733:5)

当我使用如下所示的填充时,此行仅会产生上述错误:

Project.findOne({ name: projectName }).populate({path:'inputs'}).exec(function (err, doc) {

所以这行工作正常(显然不会填充哈哈):

Project.findOne({ name: projectName }).exec(function (err, doc) {


我已经阅读了一些与我自己相关的stackoverflow问题/答案,但找不到解决方法。

在通过console.log(mongoose.connection)使用“填充”之前,我已经检查过我的猫鼬连接是否同时包含两个模型,并且已经检查了输入错误。

是的,我非常感谢您的帮助:)

答案实际上是在我引用模型的地方。 当您应该在字符串中引用模型名称时,我引用了模型变量

field: {type: Schema.Types.ObjectId, ref 'ModelName'}

我有

field: {type: Schema.Types.ObjectId, ref Model}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM