【问题标题】:How to populate an array of sub `ref`ed documents mongoose?如何填充一组子`ref`ed文档猫鼬?
【发布时间】:2016-05-16 07:41:11
【问题描述】:

我正在使用 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"
      ]
   }
]

我做错了什么?

我们将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    你可以试试:

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

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 2020-01-21
      • 2021-02-11
      • 2021-10-07
      • 2016-08-17
      • 2020-04-30
      • 1970-01-01
      • 2015-11-27
      • 2015-07-28
      相关资源
      最近更新 更多