首页 > 解决方案 > 在 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字段以在前端执行路由保护。我正在使用NodejsExpress

任何帮助将不胜感激,谢谢。

标签: node.jsmongodbexpress

解决方案


您可以为学生和教师创建不同的模式(因为它们是独一无二的,有时您可能需要它们独立),并将用户作为基本模型。

  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
       })

推荐阅读