引用猫鼬

时间:2019-08-05 05:25:21

标签: mongodb mongoose

我目前正在尝试使用以下结构引用一个名为items的集合

packageSchema = schema({
                recipient: String,
                contents: [{item :{type: mongoose.Schema.Types.ObjectId,
                    ref: 'items', required : true}, amount: String}]

下面是我的代码,用于通过其ID获取一个包

   getOnePackage : function(id,callback)
{
    packageModel.findById(id,callback)
    .populate('contents')
}

所以当我调用上面的函数时,我期望得到这个结果

{
   recipient : Dave
   contents : [
      {item : {
        _id:5d2b0c444a3cc6438a7b98ae,
        itemname : "Statue",
        description : "A statue of Avery"
      } ,amount : "2"},
      {item : {
        _id:5d25ad29e601ef2764100b94,
        itemname : "Sugar Pack",
        description : "Premium Grade Sugar From China"
      } ,amount : "5"},
   ]
}

但是我从Postman的测试中得到的是:

{
 recipient : Dave,
 contents : []
}

我可以知道哪里出了问题吗?以及如何防止猫鼬为内容数组中的每个元素自动插入一个objectId。...

1 个答案:

答案 0 :(得分:1)

因为contents数组中的元素是带有item字段的对象,所以您的填充应该是:

.populate('contents.item')