如何为不同的用户设计架构模型

时间:2020-09-18 10:14:23

标签: node.js mongodb express mongoose

我是mongodb的新手,我正在从事个人项目,这是用于大学项目的项目管理系统。我有3个用户admin(部门),学生和顾问。管理员是同时注册学生和顾问的管理员。所有用户都有一些通用字段,例如名称,电子邮件和密码。还有那里的不同领域。

他们的角色:-

- Admin -> adds the students and advisors
- Student -> choose projects and work on the projects in a team
- Advisor -> advice students based on their progress on their project
  • 我的问题是设计模型时,我应该使用一个userSchema并将所有用户添加到一个集合中,还是为每个用户创建不同的集合。

  • 我的第二个困惑是,如果我为每个用户创建不同的集合,该如何处理身份验证和授权?我正在将Node js用于后端。

我可以得到一些指导和建议吗?

1 个答案:

答案 0 :(得分:0)

这是您的选择。 在这里,我建议对所有3种类型的用户使用一个集合。 由于每个人在注册时都具有相同的功能,例如姓名,电子邮件,密码等,因此肯定可以使用单个模式。

因此,在假设“用户”的架构上创建,然后使用一个“标签”选择器来识别管理员,顾问和学生。

我会做这样的事情:

var userSchema = new mongoose.Schema({
  email: {
    type: String,
    unique: true,
    required: true,
  },
  name: {
    type: String,
    required: true,
  },
tag : {
type: String
},
    
  Addtasks: [
    {
      topic: String,
      words: Number,
      keywords: String,
      website: String,
      otherdetails: String,
      exampleRadios: String,
      deadline: Date,
      Date: String,
      fileName: String
    },
  ],
});
module.exports = mongoose.model('User', userSchema);

以此方式分别创建一个页面作为auth.js进行身份验证,并使用通行证模块身份验证在其中写入单个身份验证代码。话虽如此,您现在可以对所有3个仪表板使用一个身份验证。

对于作为前端的车把,使用它来检查用户是否已登录。

{{if #user}}
<html>
<head>
.
.
.
... 

在此之后,您可以实现这一目标。