我正在尝试为user创建不同类型的注册。我已经为用户准备了三个收藏夹。我一直在参考教师和学生中的用户集合,因为我需要获取电子邮件和密码。
如果教师注册时包含电子邮件,密码,名字,姓氏等,则会有一个收藏夹。
如果学生注册包括电子邮件,密码,名字,姓氏等,则还有另一个收藏集。
我们所有的电子邮件和密码将成为一个集合
用户-表/集合 -电子邮件:test@gmail.com -密码:asdfasdf
学生-表/集合 -名字:'sujon'
老师-桌子/收藏品 -名:“水j”
const UserSchema = mongoose.Schema({
email: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
isAdmin: {
type: Boolean,
default: false,
},
})
const StudentSchema = mongoose.Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'user',
},
firstname: {
type: String,
},
lastname: {
type: String,
},
photo: {
type: String,
},
education: {
type: String,
},
birth: {
type: Date,
},
sex: {
type: Boolean,
},
})
const TeacherSchema = mongoose.Schema({
user: {
type: mongoose.Schema.ObjectId,
ref: "user"
},
firstname: {
type: String
},
lastname: {
type: String
},
photo: {
type: String
},
designation: {
type: String
},
birth: {
type: Date
},
sex: {
type: Boolean
}
});
如何实现数据库设计
答案 0 :(得分:0)
创建一个用户模式就可以了。您可以使用具有所有属性的单一架构(因为所有三种类型的用户都具有几乎相同的属性),然后添加一个“角色”字段,如下所示:
setDatas(datas.map(item => item.id === index ? {...item, someProp : "changed"} : item ))
角色字段可以具有多个角色['Teacher','Student'...]。这样,单个用户可以具有多个角色,例如,教师也可以是管理员等。
此外,只要引入新角色,您就不必创建新模型。
可以根据用户角色查询用户。然后,这些角色也可以用于身份验证,例如,角色为“老师”的用户可以创建作业,或者角色为“学生”的用户可以提交作业。注册用户时,您可以在api或客户端上设置某种模型验证以接受某种模型。