猫鼬问题:嵌套查询返回空数组

时间:2019-03-10 18:53:19

标签: node.js mongodb mongoose

我需要在课程属性中填充“内容”,但是数组返回空。

我正在使用插件自动填充,并且可以正常工作,但不适用于多个级别。我尝试了文档,但是在2个级别上我都没有找到解决方案。

这是我的模式。

const structure = {
  name: {
    type: String,
    required: true
  },
  lessons: [{
    name: String,
    contents: [{
      type: ObjectId,
      ref: 'Content',
      autopopulate: true
    }]
  }]
}

这是我查询内容的方法。

Course.findById(contentData.course_id)
    .populate({
      path: 'lessons.contents',
      model: 'Content'
    })
    .exec((err, a) => {
      console.log(a);
      res.status(201).json(a)
  });

课程中的内容数组返回空,但退出db上的两个寄存器。

"lessons": [
        {
            "contents": [],
            "name": "Nova Aula"
        }
    ],

1 个答案:

答案 0 :(得分:0)

像这样为您的 Schema 建模...

const structure = {
  name: {
    type: String,
    required: true
  },
  lessons: [{
    name: String,
    contents: [{
      type: ObjectId,
      ref: 'Content',
      //remove this line
      //autopopulate: true 
    }]
  }]
}

您的代码看起来像这样...

const result = Course.findById(contentData.course_id)
                     .populate('lessons.contents')
                     .select('_id x y z'); // x,y,z --> attributes name you want to select from populated collection
response.send(result);