我目前正在尝试使用以下结构引用一个名为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。...
答案 0 :(得分:1)
因为contents
数组中的元素是带有item
字段的对象,所以您的填充应该是:
.populate('contents.item')