Mongo嵌套字段填充问题

时间:2018-07-02 04:48:30

标签: javascript node.js mongodb

var buyerSchema = new Schema({
   cart: [{
       id: {
           type: Schema.Types.ObjectId,
           ref: "product"
       },
       number: Number
    }],
    personName: { type: String, required: true, trim: true },
    image: { type: String, required: false, trim: true },
    email: { type: String, required: true, trim: true }
})

如何填充ID字段

buyerMdl.findByToken(buyer['token']).populate({path: 'cart', populate: {path : 'id', model : 'product'}})

此特定命令对我不起作用

2 个答案:

答案 0 :(得分:1)

您的id位于卡阵列内...因此,应使用点符号来填充id

buyerMdl.findByToken(buyer['token']).populate({ path: 'cart.id' })

答案 1 :(得分:1)

首先,请确保您的findByToken方法返回find的实例,以便您可以在链中使用.populate()

问题是您正在尝试填充未引用的属性。因此,您应该直接填充card。而不是先填充id,然后再填充cart.id

这应该有效:

buyerMdl
    .findByToken(buyer['token'])
    .populate({
       path: 'cart.id',
       model: 'product'
     });