【发布时间】:2019-07-09 19:11:49
【问题描述】:
我有两个实体: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 之间共享(没有多对多关系)。
【问题讨论】:
标签: database postgresql orm nestjs typeorm