【问题标题】:MissingSchemaError for Mongoose's Populate MethodMongoose 的填充方法的 MissingSchemaError
【发布时间】:2013-11-14 09:22:36
【问题描述】:

我正在尝试处理 mongoose 的填充,但不断收到此错误:

/node_modules/mongoose/lib/connection.js:625
throw new MongooseError.MissingSchemaError(name);
      ^
MissingSchemaError: Schema hasn't been registered for model "Users".

我的代码只是试验了基本的填充功能。它看起来像这样:

我定义了模式:

var user = mongoose.Schema({
  userName: String 
});

var client = mongoose.Schema({
 fk_user: { type: mongoose.Schema.ObjectId, ref: 'Users' },
 name: String
});

我创建模型:

var UserModel = mongoose.createConnection('localhost','fixDB').model('Users', user);
var ClientModel = mongoose.createConnection('localhost','fixDB').model('Clients', client);

我保存了一个实例:

var user1 = new UserModel({userName: 'issimo'});

user1.save(function(err){
 if (err) console.log(err);

  var client1 = new ClientModel({fk_user:user1._id,name:'co'});

  client1.save(function(err){
     if (err) console.log(err);
               console.log('done');
         })
});

到目前为止一切顺利。我的数据库有两个文件。

现在我在我的客户端上使用填充来发现关联用户的用户名。

ClientModel.findOne().populate('fk_user').exec(function(err, c) {
  if (err) { return console.log(err); }
   console.log(c.fk_user.userName);
});

我得到了上述错误。我不知所措:我更新了我的猫鼬,并尝试了许多不同的代码排列 - 我猜测(并希望)我忽略了一些非常基本的东西。有许多非常相似的 SO 问题,但没有一个完全适合。

非常感谢。

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    这样定义你的模型。它们不需要与数据库连接有任何关系。

    var UserModel = mongoose.model('Users', user);
    var ClientModel = mongoose.model('Clients', client);
    

    【讨论】:

    • 这真的解决了问题吗?
    • @Peter Lyons 你能解释一下吗,我也遇到了同样的问题,但是我的模型在不同的文件中,模型操作来获取细节在不同的文件中!!
    猜你喜欢
    • 2016-07-11
    • 2019-04-09
    • 1970-01-01
    • 2018-10-20
    • 2015-01-22
    • 1970-01-01
    • 2014-12-29
    • 2020-11-12
    • 1970-01-01
    相关资源
    最近更新 更多