在Typeorm中,您可以在列选项中设置唯一标志,或将实体的列设置为唯一。
什么时候使用什么,有什么区别?
@Unique(["firstName"])
https://typeorm.io/#/decorator-reference/unique
@Column({ unique: true })
firstName: string;
答案 0 :(得分:3)
如文档中所述,@Unique
只能应用于整个实体,不能应用于单个列。为了可读性,我更喜欢简单的约束 @Column({ unique: true })
,因为它正好位于受影响的变量名称之上。
@Unique
语法的另一个优点是多列约束能力。您可以将多个列定义为一个唯一约束:@Unique(["firstName", "secondName"])
。这对于 @Column
装饰器是不可能的。
最后,您可以在使用 @Unique
装饰器时为特定约束设置名称。以下单列约束定义在功能上是相同的,除了 @Unique
设置了一个人类可读的名称(注意:@Unique
需要实体变量字段名称,而不是实际的数据库列名称):
@Unique('my_unique_constraint', ['firstName']) // make firstName unique
export class PersonEntity {
@Column({ unique: true }) // make firstName unique, too; decide which to chose
firstName: string;
...