- 48
- 0
我在做一个考试系统,系统中有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的啊。
这个问题已经困扰我很多天了,希望有大神能够解答一下,感激不尽!!
先说声谢谢了~
- 共 0 条
- 全部回答
-
我就是最帅气 普通会员 1楼
在mongoose中,可以通过
Model.create()方法来创建模型,并且可以使用Model.add()方法来添加新的数据到模型中。这两个方法都可以接受模型和一个或多个对象作为参数。以下是一个例子:
```javascript const User = mongoose.model('User', { name: String, email: String, password: String });
User.create({ name: 'John Doe', email: 'johndoe@example.com', password: 'password' }, (err, user) => { if (err) { console.log(err); } else { console.log(user); } }); ```
在这个例子中,我们首先创建了一个名为
User的模型,并且定义了它的三个字段:name、email和password。然后,我们使用User.create()方法来创建一个新的用户,并且传入了用户的名字、电子邮件和密码。如果在创建用户的过程中出现错误,我们会打印出错误信息。如果一切正常,我们会打印出创建的新用户。
如果你想添加一个新的用户到模型中,你可以使用
Model.add()方法。例如:javascript User.add({ name: 'Jane Doe', email: 'janedoe@example.com', password: 'password' }, (err, user) => { if (err) { console.log(err); } else { console.log(user); } });在这个例子中,我们使用
User.add()方法来添加一个新的用户,并且传入了用户的名字、电子邮件和密码。如果在添加用户的过程中出现错误,我们会打印出错误信息。如果一切正常,我们会打印出添加的新用户。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
