如何填充子“引用”文档猫鼬数组

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

本文关键字:引用 文档 数组 何填充 填充      更新时间:2023-09-26

我正在开发一个带有 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);
});