node.js - 猫鼬填充多个级别
问题描述
我有一个 users 集合,其中有一个 orders 键:
orders:[{
type:mongoose.Schema.Types.ObjectId,
ref:'Order'
}]
订单模式有一系列产品:
contents:[{
product:{
type:String,
ref:'Product'
},
size:String,
color:String,
price:Number
}]
并且产品架构的 _id 为:
_id:{
type:String,
unique:true,
required:true
}
现在,我想返回用户以及该订单中他的订单和产品的所有详细信息。
我试过了,但它没有用产品详细信息填充订单:
User.findById(req.user._id)
.populate("orders")
.populate("orders.contents.product")
当我尝试填充单个订单时,它工作正常:
Order.findById(req.params.orderId)
.populate("contents.product")
解决方案
您可以尝试嵌套方法,在您的情况下应该类似于:
.populate({
path: 'orders',
populate: {
path: 'contents.product'
}
})
https://mongoosejs.com/docs/populate.html#populate_multiple_documents
推荐阅读
- php - wordpress 中的自定义帖子类型总数
- mongodb - $match 合计不返回 mongodb 中的数据
- javascript - 如何在 onClick React 中接受多个参数
- sensenet - Sensenet:文档共享
- javascript - 如何为其他用户远程启用/禁用 Tampermonkey 脚本
- php - 循环 Wordpress 中的三个 else
- powerapps-portal - 在 PowerApps 门户中创建向下钻取/主详细信息导航/查找屏幕
- opencv - OpenCV OMX 工件
- linux - 我可以在没有 Insider 或 Beta 计划的情况下在最新的 Windows 更新 2004 中激活 WSL 2 吗?
- linear-gradients - 如何在 Theme-ui 中使用渐变值?