在mongodb中创建不同类型的用户

时间:2018-07-27 04:39:30

标签: node.js mongodb express

我想创建一个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

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

2 个答案:

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