如何连接我的第一列 TypeORM

问题描述 投票:0回答:1

我想为我的用户创建一封验证电子邮件。但是,我不知道如何使用 typeorm 在 UserToken 表中与我的用户 ID 进行联接。

有人可以解释一下吗?

@Entity({name: "user_token"})
export class UserToken {
    @PrimaryColumn({name: "user_id"})
    @IsUUID()
    @IsNotEmpty()
    userId: UserId


    @Column({name: "token"})
    @IsString()
    @IsNotEmpty()
    token!: string
}
@Entity({name: "users"})
export class UserEntity {
    @PrimaryColumn({name: "id"})
    @IsUUID()
    @IsNotEmpty()
    id!: string
}
node.js typescript typeorm
1个回答
0
投票

您可能想在 UserToken 实体中使用 @ManyToOne() 装饰器,如下所示:

@Entity({ name: 'user_token' })
export class UserToken {
  @PrimaryColumn({ name: 'user_id' })
  @IsUUID()
  @IsNotEmpty()
  userId: UserId;

  @ManyToOne(() => UserEntity, user => user.userTokens, {
    onDelete: 'CASCADE',
  })
  @JoinColumn()
  user: User;

  @Column({ name: 'token' })
  @IsString()
  @IsNotEmpty()
  token!: string;
}

然后像这样修改 User 实体:

@Entity({ name: 'users' })
export class UserEntity {
  @PrimaryColumn({ name: 'id' })
  @IsUUID()
  @IsNotEmpty()
  id!: string;

  @OneToMany(() => UserToken, token => token.user)
  userTokens: UserToken[];
}

由于用户可以拥有多个令牌(以防一个过期),因此您应该具有一对多的关系

© www.soinside.com 2019 - 2024. All rights reserved.