Mongoose populate函数返回空数组

时间:2018-03-14 16:49:03

标签: node.js mongoose mongoose-schema mongoose-populate

关于这一点有很多问题,我已经看过它们了。但是,我的模型和功能都与提供的建议或答案相符。我有一个带有对另一个模型的数组引用的模型,如此......

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'})

我在这里缺少什么?似乎有些人暗示从单独的文件中声明模型可能会出现问题。

0 个答案:

没有答案