我有一个像这样的猫鼬模型:
var ModuleSchema = new Schema({
systems: [{
system: {
type: Schema.ObjectId,
ref: 'System'
},
quantity: {
type: Number
}
}]
});
mongoose.model('Module', ModuleSchema);
基本上不会填充ModuleSchema.systems.$.system
属性。
该属性属于对象数组中的对象。我已经尝试了所有东西来让它填充,但它不会发生。
我尝试使用以下语法进行填充,但不确定可能出现的问题,因为我仍然没有收回填充的System属性。
Module.findOne({project: pId}).sort('-created')
.populate('systems.system')
答案 0 :(得分:0)
它不起作用,因为系统不是系统的属性。你需要像
那样填充它Module.findOne({project: pId}).sort('-created')
.populate('systems.0.system').exec(function (err, doc){})
Module.findOne({project: pId}).sort('-created')
.populate('systems.1.system').exec(function (err, doc){})
所以你应该有一个for循环并迭代它以填充所有文档。否则,您应该修改模型以使其更好地工作。
var ModuleSchema = new Schema({
systems: [{
system: {
type: Schema.ObjectId,
ref: 'System'
},
quantity: {
type: Number
}
}]
});
将您的模型更改为此,这将使您轻松。
var ModuleSchema = new Schema({
systems: {
system: [{
type: Schema.ObjectId,
ref: 'System'
}],
quantity: {
type: Number
}
}
});