是否可以在 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
对象。
我是 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
对象。