关于这一点有很多问题,我已经看过它们了。但是,我的模型和功能都与提供的建议或答案相符。我有一个带有对另一个模型的数组引用的模型,如此......
facilities: [{ type: Schema.Types.ObjectId, ref: 'Facility' }]
我按照这样的方式进入那个数组......
$push: {
facilities: req.body.facilityId
}
这一切都有效。我可以在没有findOne
的情况下执行populate
,并且我会使用新推送的objectId获得响应。
{
"_id": "5aa1771dc1558263eb80e790",
"__v": 0,
"updatedAt": "2018-03-14T16:04:02.000Z",
"createdBy": "5a8b33d24456d4ad1bd97546",
"updatedBy": "5aa1771ec1558263eb80e7a2",
"createdAt": "2018-03-06T16:15:20.651Z",
"deleted": false,
"facilities": [
"5a8b281ee3c022a8d0cf74a7"
],
"identifier": "5437",
"name": "District 1"
}
但是,只要我尝试在该操作上使用populate
,它就会返回一个空数组。
Districts.find({}).populate('facilities').exec(function(err, districts) {
if (err){
res.json({error: err.message});
return;
}
res.json(districts);
});
{
"_id": "5aa1771dc1558263eb80e790",
"__v": 0,
"updatedAt": "2018-03-14T16:04:02.000Z",
"createdBy": "5a8b33d24456d4ad1bd97546",
"updatedBy": "5aa1771ec1558263eb80e7a2",
"createdAt": "2018-03-06T16:15:20.651Z",
"deleted": false,
"facilities": [],
"identifier": "5437",
"name": "District 1"
}
我也尝试了建议的隐含规范'像这样......(不起作用)
.populate({path: 'facilities', model: 'Facility'})
我在这里缺少什么?似乎有些人暗示从单独的文件中声明模型可能会出现问题。