当调用populate TypeError时:无法读取未定义的属性'ref'

时间:2014-01-28 20:07:59

标签: node.js mongodb mongoose

我正在尝试按名称添加学生并填充所有数据。 我的学生模式看起来像

// 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] 

当我评论填充行时,我得到学生,但考试列表是空的。 如何通过名字找到一名学生并填写该学生的所有考试?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是populate适用于您通过引用链接到其他文档的情况,其中您的架构中的考试字段是一个子文档数组。它们应自动包含完整信息。

有关详细信息,请参阅有关填充(http://mongoosejs.com/docs/populate.html)和子文档(http://mongoosejs.com/docs/subdocs.html)的文档页面。