我想创建一个API进行注册,登录和其他操作。两种类型的用户 老师和学生,我正在使用MongoDb并定义架构。
const UserSchema = new Schema({
studentInfo : {
name: String,
email: String,
password: String,
birthday: Date,
state: String,
zip_code: String,
address: String,
phone_number: String,
},
teacherInfo : {
name: String,
email: String,
password: String,
birthday: Date,
state: String,
zip_code: String,
address: String,
phone_number: String,
course: {
title: String,
price: Number,
description: String
}
},
role: String
});
这是一个好方法吗?还是有更好的方法?
我添加了role
字段以在前端执行路由保护。
我正在使用Nodejs
和Express
。
任何帮助将不胜感激,谢谢。
答案 0 :(得分:0)
这是将学生和教师对象都嵌入到同一文档中的一种方法,您可以通过单个查询简单地获取数据。尽管您不需要将通用字段分别嵌入对象(例如名称,电子邮件,密码,电话号码等)中,teacherInfo就像这样
teacherInfo : {
course: {
title: String,
price: Number,
description: String
}
}
答案 1 :(得分:0)
您可以为学生和教师创建不同的架构(因为它们是唯一的,有时可能需要独立的架构),并将用户作为基本模型。
var User= new Schema({
name: String,
email: String,
password:String,
birthday: Date,
state: String,
zip_code: String,
address: String,
phone_number: String,
_teacher:{type:Schema.Types.ObjectId, ref:'Teacher'},
_student: {type:Schema.Types.ObjectId, ref:'Student'}
});
如果_teacher具有值,则可以将用户视为老师。 如果_student具有值,则可以将用户视为学生。
//Teacher Model
var Teacher = new Schema({
course: {
title: String,
price: Number,
description: String
},
//other teacher's fields
})
//Student Schema
var Student= new Schema({
//student's fields if you need in future
})