根据3.6发行说明,我应该能够在我的order.items.product文档中填充类别,但是没有去。这是模式:
var Order = new Schema({
items: [{
product: {
type: Schema.Types.ObjectId,
ref: "Product",
}
...
}]
});
var Product = new Schema({
categories: [{
type: Schema.Types.ObjectId,
ref: "Category",
}]
});
我的查询(其中一个 - 我尝试了几个组合 - 这似乎是建议的)
Order.findById(id).populate('items.product').exec(function(err, doc) {
var opts = {
path: 'items.product.categories'
};
console.log(doc.items[0].product.categories) // [ 524f035de9d6178e460001a2, 524f0965e9d6178e460001b6 ] - these docs are in the database under the Category collection
Order.populate(doc, opts, function(err, doc) {
// Returns order with category array blank for each product
console.log(doc.items[0].product.categories // []
});
});
答案 0 :(得分:1)
看起来您在子群呼叫中不小心再次键入Order
。
第二个填充调用应该是:
Category.populate(doc, opts, function(err, doc) {...
而不是
Order.populate(doc, opts, function(err, doc) {...
您告诉Mongoose将每个产品的Categories
数组元素填充为Order
而不是Category
。