我想为我的用户创建一封验证电子邮件。但是,我不知道如何使用 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
}
您可能想在 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[];
}
由于用户可以拥有多个令牌(以防一个过期),因此您应该具有一对多的关系