【发布时间】:2016-05-01 06:23:43
【问题描述】:
我在 Node.js 应用程序中使用 Mongoose 4.3.6。
比如说,我有两个模型:
var User = mongoose.model('User', SomeParentSchema.extend({
_id: String,
name: String
}));
var Like = mongoose.model('Like', AnotherParentSchema.extend({
_id: String,
user_id: {
type: String,
ref: 'User'
}
}));
我也在使用mongoose-schema-extend,为了这个问题,我们可以说这两个实体都是从某个父架构扩展而来的。
由于我使用的是ref,理论上Model.populate 应该使用User 模型自动填充字段。
ref 选项告诉 Mongoose 在填充过程中使用哪个模型
Like.findOne({}).populate('user_id').exec(callback);
以上只是永远不会工作。就这么简单(该字段以null 结尾)。我必须这样做才能使其工作:
Like.findOne({}).populate({ path: 'user_id', model: 'User' }).exec(callback);
当我这样做时,该字段是预期的 User 对象(但由于某种原因,我不得不明确告诉 populate 以寻找该路径作为 User 模型;即使 ref 应该根据我上面链接到的 Mongoose 文档来处理这个问题)。
我错过了什么吗?
【问题讨论】: