我需要在课程属性中填充“内容”,但是数组返回空。
我正在使用插件自动填充,并且可以正常工作,但不适用于多个级别。我尝试了文档,但是在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"
}
],
答案 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);