我正在尝试使用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');
})
});
到目前为止一切顺利。我的数据库有两个文件。
现在我在我的客户端上使用populate来发现关联用户的userName。
ClientModel.findOne().populate('fk_user').exec(function(err, c) {
if (err) { return console.log(err); }
console.log(c.fk_user.userName);
});
我得到了上述错误。我不知所措:我更新了我的猫鼬,尝试了许多不同的代码排列 - 我猜(并希望)我忽略了一些非常简陋的东西。有许多非常相似的SO问题,但它们都不恰当。
非常感谢。
答案 0 :(得分:1)
像这样定义你的模型。它们不需要与数据库连接有任何关系。
var UserModel = mongoose.model('Users', user);
var ClientModel = mongoose.model('Clients', client);