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

Is it possible to populate nested references in Mongoose?

我是 MongoDB 的新手,正在尝试将另一个集合中的数据填充到响应中。最简单的例子如下:

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

当关系处于根级别时,我可以使用 .populate(),但在上面的示例中,我有一个具有自己属性的项目数组,例如qty,加上对产品的 _id 引用。我想将产品对象填充到每个汽车项目中,但似乎找不到任何示例来说明 "right" 方法是什么。

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

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

你可以试试这个,它会为你工作。

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

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