node.js - 在 mongodb 中创建不同类型的用户
问题描述
我想创建一个 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
。
任何帮助将不胜感激,谢谢。
解决方案
您可以为学生和教师创建不同的模式(因为它们是独一无二的,有时您可能需要它们独立),并将用户作为基本模型。
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
})
推荐阅读
- javascript - GTM 上的 Tawk.to 事件跟踪
- java - Microprofile Config 可选字符串,当配置不存在时给出 DeploymentException
- entity-framework - 如何设置 EF Core 以在一对一关系上级联删除?
- python-3.x - 与python中的子进程交互的最佳实践是什么
- python - Python中矩阵乘法的最快方法是什么?
- sql - 如何在 PostgreSQL 中按照 ISO 8601 创建日历表?
- haskell - Plutus Pionneers homework01 (week02) 打字版
- html - 跨域有效吗?
- react-native - 如何使用 formData 在 React Native Camera 中发布图片?
- android - 有没有办法在您在 Android Studio 中键入时显示文本?