У меня есть две сущности: 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;
}
Мне нужен уникальный заголовок актера для проекта, но не для всей базы данных.
OK
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
(отношения между многими и многими).