typescript - TypeORM duplicerat nyckelvärde för ManyToMany-relation
Kontext
Jag använder TypeORM och NestJS.
Jag har två entiteter :
- träningspass
- övning
Ett träningspass kan ha flera övningar och en övning kan ha flera träningspass. För att implementera detta använder jag en ManyToMany-relation.
Träningsenhet
@Entity()
export class Workout {
@PrimaryGeneratedColumn()
id: number;
@JoinTable()
@ManyToMany(() => Exercise, (exercise) => exercise.workouts)
exercises: Exercise[];
}
Träningsenhet
@Entity()
export class Exercise {
@PrimaryGeneratedColumn()
id: number;
@ManyToMany(() => Workout, (workout) => workout.exercises)
workouts: Workout[];
}
Allt fungerar bra men jag fick ett felmeddelande duplicate key value violates unique constraint när jag försöker skapa ett träningspass med två samma övningar.
Fråga : hur kan jag ha dubblettentiteter i en ManyToMany-relation ?
Svar #1
Bakom kulisserna använder det implicit många-till-många tabell:
|workout_id | excersise_id |
| 1 | 1 |
Primärnyckeln i det här fallet kommer att kombineras med dessa två nycklar.
För att åtgärda ditt problem skulle jag rekommendera att konvertera implicit många-till-många till explicit: https://orkhan.gitbook.io/typeorm/docs/many-to-many-relations#many-to-many-relations-with-custom-properties
I ditt fall kommer du att ha en anpassad egenskap id, detta kommer att lösa duplicate key value violates unique constraint, eftersom endast id kommer att vara unik.
Hoppas det hjälper.
