提问人:Matin 提问时间:11/16/2023 最后编辑:Matin 更新时间:11/17/2023 访问量:36
Typeorm 多对多关系
Typeorm Many to Many relation
问:
我有两个实体(群组和用户)
export class Cohort {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToMany(() => User, (user) => user.cohortsPupil)
@JoinTable()
pupils: User[]
}
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column({ unique: true })
email: string;
@ManyToMany(() => Cohort, (cohort) => cohort.pupils)
cohortsPupil: Cohort[]
}
如何更新 Cohort.Pupils ?
const cohort = await this.queryOneByOption({
relations: ['pupils'],
where: { id },
});
cohort.pupils = pupilUpdate.pupils;
await this.save(cohort);
我使用这段代码,一周前它起作用了,但现在当学生以前有过一段关系时,它会给出这个错误 错误:违反主键约束“PK_*******”。无法在对象“dbo.cohort_pupils_user”中插入重复的键。重复的键值为 (A, B)
所以现在我这样做:
await this.dataSource.transaction(async (entityManager: EntityManager) => {
await entityManager.save(Cohort, {
id,
pupils: [],
});
await entityManager.save(Cohort, {
id,
pupils: pupilUpdate.pupils,
});
});
你能告诉我你是如何做到这一点的,这个错误是否正常吗?
答: 暂无答案
上一个:类型ORM 嵌套关系
评论