首页 > 解决方案 > 猫鼬填充多个级别

问题描述

我有一个 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")

标签: node.jsmongodbmongoosemongoose-populate

解决方案


您可以尝试嵌套方法,在您的情况下应该类似于:

.populate({ 
  path: 'orders',
  populate: {
    path: 'contents.product'
  } 
})

https://mongoosejs.com/docs/populate.html#populate_multiple_documents


推荐阅读