Node.js 如何为数据库中的用户管理表?

Node.js 如何为数据库中的用户管理表?,node.js,nestjs,typeorm,Node.js,Nestjs,Typeorm,假设我有一个教师实体和一个学生实体。它们都有电子邮件和密码,但老师和学生都有额外的栏。那么,会是不同的桌子吗?但在本例中,我必须创建身份验证模块、控制器、jwt策略以及它们各自的所有内容。如何将它们保持在同一个表中,但根据角色进行扩展 p、 美国澄清: 这是我的护照策略。我需要在这里使用教师服务。学生也一样。大量冗余代码。这并不是唯一的情况 @Injectable() export class LocalStrategy extends PassportStrategy(Strategy) {

假设我有一个教师实体和一个学生实体。它们都有电子邮件和密码,但老师和学生都有额外的栏。那么,会是不同的桌子吗?但在本例中,我必须创建身份验证模块、控制器、jwt策略以及它们各自的所有内容。如何将它们保持在同一个表中,但根据角色进行扩展

p、 美国澄清:

这是我的护照策略。我需要在这里使用教师服务。学生也一样。大量冗余代码。这并不是唯一的情况

@Injectable()
export class LocalStrategy extends PassportStrategy(Strategy) {
  constructor(private authService: AuthService) {
    super({
      usernameField: 'email'
    });
  }
  async validate(email: string, password: string): Promise<Teacher | Student> {
    return this.authService.getAuthenticatedUser(email, password);
  }
}
@Injectable()
导出类LocalStrategy扩展了PassportStrategy(策略){
构造函数(专用authService:authService){
超级({
usernameField:“电子邮件”
});
}
异步验证(电子邮件:字符串,密码:字符串):承诺{
返回此.authService.getAuthenticatedUser(电子邮件、密码);
}
}

将特定数据放在JSON列中。这样你就可以为所有老师和学生安排一张桌子了

类用户{
@PrimaryGeneratedColumn()
id:编号;
@第()列
电子邮件:字符串;
@第()列
密码:字符串;
@列({type:'json'})

data:any;//为什么不创建一个用户实体,然后让教师和学生实体通过外键链接到单个用户实体?我想这会更接近BCNF。@Sumneevans,我想这很好,但我不知道如何动态链接到特定表。好的,我有带电子邮件的BaseUser实体,通过吗单词、角色和外键指向另一个表,该表包含其余列。但我没有唯一的实体。我至少有两个实体:学生和教师。如何将用户链接到特定表(学生或教师)基于他们的角色?但如果以后我希望此数据与其他表进行另一次联接呢?要联接这些表,您需要将它们作为单独的表。
User
Teacher
和d
Student
用户
有一个名为
role
的属性,它可以是
Teacher
Student
User
Teacher
实体具有
userId
列。并基于数据(json)连接用户和教师/学生列?它会工作吗?不会。此时,
数据将不存在。让我更新我的答案以及如何加入它们?正如我所知,关系修饰符必须在两侧。这是我的问题:我不知道如何为两个表:学生和教师创建通用列。