如何填充一个子`ref`ed文件数组mongoose?

时间:2016-02-06 09:02:18

标签: javascript node.js mongodb mongoose mongoose-populate

我正在研究一个带有Mongoose版本4.4.0的MEAN堆栈应用程序,并且在填充一系列子文档时遇到问题。 (无法在其他地方找到解决方案。

以下说明了模型的结构:

签证模式

var visaSchema = new mongoose.Schema({
  from: {type: Schema.Types.ObjectId, ref: 'Country'},
  to: {type: Schema.Types.ObjectId, ref: 'Country'},
  requirements: [
    {type: Schema.Types.ObjectId, ref: 'Requirement'}
  ]
});

exports.model = mongoose.model('Visa', visaSchema);

需求模型

var requirementSchema = new mongoose.Schema({
   visa: {type: Schema.Types.ObjectId, ref: "Visa"},
   title: String,
   body: String
});

exports.model = mongoose.model('Requirement', requirementSchema);

以上基本上构建了VisaRequirement之间的 一对多 关系。

问题

我无法填充 requirements字段,该字段实际上是Requirement ref个对象的数组。

这就是我试图实现它的方式:

Visa.find()
   //.populate('from', null, {shortName: from})
   //.populate('to', null, {shortName: to})
   .populate('requirements')
   .exec(function(err, result){
      res.json(result);
   });

每当我尝试填充requirements字段时,它会在requirements键上返回一个空数组。

但是如果没有总体,它将返回ObjectIds

的数组
[
   {
     "_id":"56b329878848eba00c0f5535",
     "from"{
          "_id":"56b2db1b57f9e71c1bfbadb9",
          "name":"Germany",
          "shortName":"DE",
          "__v":0
     },
     "to":{
          "_id":"56b2db0f57f9e71c1bfbadb8",
          "name":"Afghanistan",
          "shortName":"AFG",
          "__v":0
     },
     "__v":3,
     "requirements":  [
          "56b331d764585e8c12c14dd1", 
          "56b336431ffc49bc19bf1c96",
          "56b33675443f033c14e26d03"
      ]
   }
]

我做错了什么?

任何形式的帮助都将受到赞赏。

0 个答案:

没有答案