猫鼬3.6+人口稠密的土地

时间:2014-04-08 00:23:12

标签: javascript node.js mongodb mongoose

根据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 // []
    });
});

1 个答案:

答案 0 :(得分:1)

看起来您在子群呼叫中不小心再次键入Order

第二个填充调用应该是:

Category.populate(doc, opts, function(err, doc) {...

而不是

Order.populate(doc, opts, function(err, doc) {...

您告诉Mongoose将每个产品的Categories数组元素填充为Order而不是Category