我正在构建一个运行课程的应用程序。每门课程都有单元。每个单元都有页面,问题和最后的测验。我以为我已经正确设置了所有内容,但是如果我查看单位列表,它只会显示ID并且不会填充。
模特:
var unitSchema = new Schema({
number: Number,
title: String,
unitCode: String,
pageCount: Number,
time: Number
});
var pageSchema = new Schema({
number: Number,
title: String,
content: String,
courseQ: Boolean,
unitCode: String
});
var courseQuestionSchema = new Schema({
question: String,
choices: [],
correct: Number
});
var quizSchema = new Schema({
code: String,
questions: [{
question: String,
choices: [],
correct: Number
}]
});
var courseSchema = new Schema({
name: String,
code: String,
state: String,
instructor: String,
agency: String,
providerNumber: String,
schoolNumber: String,
price: {type: Number, get: getPrice, set: setPrice },
available: Boolean,
units : [{ type : Schema.ObjectId, ref : 'unitSchema' }],
pages : [{ type : Schema.ObjectId, ref : 'pageSchema' }],
cQuestions : [{ type : Schema.ObjectId, ref : 'courseQuestionSchema' }],
quizzes : [{ type : Schema.ObjectId, ref : 'quizSchema' }]
});
Schema.statics:
unitSchema.statics = {
list: function (options, cb) {
var criteria = options.criteria || {};
this.find(criteria)
.populate('units')
.exec(cb)
}
}
控制器:
exports.coursesUnits = function(req, res){
var options = {
criteria: { 'id':req.param('units',req.course.units.id)}
};
Courses.list(options, function(err, units) {
if (err) return res.render('500');
res.render('admin/courses/units', {
title: '',
description: '',
units: req.course.units,
course: req.course,
active: 'courses', active2: 'course-list', active3: ''
})
})
};
我花了整整一周的时间寻找解决这个问题的方法,但没有运气。提前感谢任何指向正确的方向。
答案 0 :(得分:1)
我很抱歉。我觉得你搞砸了你的模特。属性“ref”仅适用于其他模型,而不适用于模式。
你必须首先使用mongoose.model('Quiz',quizSchema)创建一个模型
之后你可以参考'测验'。
这样就可以使用objectId为测验创建一个新集合并对其进行引用。