我正在尝试按名称添加学生并填充所有数据。 我的学生模式看起来像
// Exam Schema
var ExamSchema = new Schema({
name: String,
mark: String,
teacher: String,
activated: Date
});
// Student Schema
var StudentSchema = new Schema({
name: String,
description: String,
exams: [ExamSchema],
activated: Date
});
我添加了StudentSchema静态函数
loadByName: function (name, cb) {
this.findOne({ name : name})
.populate('exams')
.exec(cb)
},
ad我打电话时收到错误
TypeError: Cannot read property 'ref' of undefined
at model.populate [as _populate]
当我评论填充行时,我得到学生,但考试列表是空的。 如何通过名字找到一名学生并填写该学生的所有考试?
答案 0 :(得分:2)
您遇到的问题是populate
适用于您通过引用链接到其他文档的情况,其中您的架构中的考试字段是一个子文档数组。它们应自动包含完整信息。
有关详细信息,请参阅有关填充(http://mongoosejs.com/docs/populate.html)和子文档(http://mongoosejs.com/docs/subdocs.html)的文档页面。