我在做一个考试系统,系统中有4个集合:
教师集合:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TeacherSchema = new Schema({
userId: Number, // 教师工号
userName: String, // 用户名
passWord: String, // 密码
_papers:[{ type: Schema.Types.ObjectId, ref: 'Paper' }]
})
module.exports = mongoose.model('Teacher', TeacherSchema);
学生集合:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var StudentSchema = new Schema({
userId: Number, // 学号
userName: String, // 用户名
passWord: String, // 密码
grade: Number, // 年级 1~6 分别代表一年级到六年级
class: Number, // 班级
exams:[{ // 参加的考试
_papers:{ type: Schema.Types.ObjectId, ref: 'Paper' },
date: Date,
score:Number
}]
})
module.exports = mongoose.model('Student', StudentSchema);
试卷集合:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var PapersSchema = new Schema({
name: String, // 试卷名
totalPoints: Number, // 总分
time: Number, // 考试时间
startTime: Date, // 开始时间
examnum: Number, // 考试人数
_teacher: { type: Schema.Types.ObjectId, ref: 'Teacher'}, // 老师
_questions: [{ type: Schema.Types.ObjectId, ref: 'Question' }] // 题
})
module.exports = mongoose.model('Paper', PapersSchema);
问题集合:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var QuestionSchema = new Schema({
name: String, // 问题名
_teacher: { type: Schema.Types.ObjectId, ref: 'Teacher' }, // 所属老师
_papers: [{ type: Schema.Types.ObjectId, ref: 'Paper' }], // 所属试卷
content: String, // 内容
selection: [String], // 选项
type: {type:String,enum:[ // 类型
'single', // 单选
'multi', // 多选
'Q&A', // 简答
'judgement' // 判断
]},
score: Number, // 分值
answer: String // 答案
});
module.exports = mongoose.model('Question', QuestionSchema);
在系统中,教师可以增加试卷,这个时候我就不知道该怎么保存前台传过来的数据。数据中既有试卷的信息,也有很多题目。题目都属于该试卷,改试卷又属于当前登录系统的老师(即创建试卷的老师)。
怎么才能让试卷、教师、问题关联起来啊,ref存的是_id,然而这些新增的数据,是保存之后才有_id的啊。
这个问题已经困扰我很多天了,希望有大神能够解答一下,感激不尽!!
先说声谢谢了~
自问自答!
这个是我的实现方法,这已经算是‘回调地狱’了,有需要可以自己用Promise优化。