是否可以在Mongoose中填充嵌套引用?

时间:2017-01-31 17:52:39

标签: mongodb mongoose mongoose-populate

我是MongoDB的新手,试图将来自其他集合的数据填充到响应中。最简单的例子如下:

const CartSchema = new Schema({
  items: [{
    product: { type: Schema.Types.ObjectId, ref: 'product' },
    qty: Number
  }],
  ...
});

当关系处于根级别时,我能够使用.populate(),但在上面的示例中,我有一系列具有各自属性的项目,例如: qty,以及对产品的_id引用。我想将产品对象填充到每个汽车项目中,但似乎无法找到关于"对"的内容的任何示例。这样做的方法。

Cart.findById(id)
  .populate('products')   // <-- something like this
  .then(record => ... )
  .catch(next);

我知道在查找购物车记录并手动扩展初始对象后,我可能会在产品集合上单独.find(),但我希望有一种方法可以在原始查询中填充数据?

1 个答案:

答案 0 :(得分:2)

你可以试试这个,它会对你有用。

Cart.findById(id)
    .populate('items.product')
    .then(record => ... )
    .catch(next);

.populate('items.product')populate数组中所有购物车项目的product对象。