繁体   English   中英

如何填充子`ref`ed文档猫鼬的数组?

[英]How to populate an array of sub `ref`ed documents mongoose?

我正在使用 Mongoose 4.4.0版开发 MEAN 堆栈应用程序,但在填充子文档数组时遇到问题。 在 SO 的其他地方找不到解决方案。

下图说明了模型的结构:

签证型号

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"
      ]
   }
]

我究竟做错了什么?

任何形式的帮助将不胜感激。

你可以试试:

Visa.find()
  .populate([
     { path: "from" },
     { path: "to" },
     { path: "requirements" },
   ])
  .exec(function(err, result){
     res.json(result);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM