我有两个实体:project
和actor
。
export abstract class BaseEntityModel {
@PrimaryGeneratedColumn()
id: number;
}
@Entity()
export class Project extends BaseEntityModel {
@Column()
title: string;
@OneToMany(type => Actor, actor => actor.project)
@JoinColumn()
actors: Actor[];
}
@Entity()
export class Actor extends BaseEntityModel {
@Column({unique: true})
title: string;
@ManyToOne(type => Project, project => project.actors)
project: Project;
}
我希望每个项目都具有唯一的演员称号,但不要跨数据库。
projects: [
{
title: "webapp",
actors: [
{
title: "dev"
}
]
},
{
title: "json-parser",
actors: [
{
title: "dev"
},
{
title: "target"
}
]
}
]
projects: [
{
title: "webapp",
actors: [
{
title: "dev"
},
{
title: "dev"
}
]
},
{
title: "json-parser",
actors: [
{
title: "dev"
},
{
title: "target"
}
]
}
]
@Column({unique: true})
在整个表中都是唯一的,这不是我想要的。还有类装饰器@Unique(['title'])
,但似乎也是如此。
我是否可以使用TypeORM中的某些内容,或者我必须检查自己actor.title
是否已存在于项目中。避免在同一项目中重复actor.title
。在保持跨数据库相同时间actor.title
的可能性的同时?
请注意,Actor
实体不应在projects
之间共享(无多对多关系)。
答案 0 :(得分:1)
向@Unique(['title', 'project'])
添加Actor
类修饰符似乎是我要找的东西,请注意,我以某种方式“破坏了”数据库,并且只有在删除/创建数据库之后,迁移才能正常工作。