我在更新具有多对多关系的实体时遇到问题,好奇我是否做错了什么,或者更具体地说,正确的方法是什么
考虑以下实体……
@Entity
class Subject
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
name: string;
@ManyToMany(() => Note, note => note.subjects)
@JoinTable()
notes: Note[];
...
@Entity()
export class Note {
@PrimaryGeneratedColumn('uuid')
id: string;
@ManyToMany(() => Subject, (subject: Subject) => subject.notes)
subjects: Subject[];
在我的代码中,我找到了节点,然后尝试更新它并像这样保存……
const note = await noteRepo.findOneOrFail(noteId);
const foundSubjects = await subjectRepo.findByIds(Array.from(subjectIds));
note.subjects = foundSubjects;
noteRepo.save(note);
但是,唉,主题并没有保存在笔记上。
这样做的正确方法是什么?
谢谢!
原文由 Jonathan 发布,翻译遵循 CC BY-SA 4.0 许可协议
在我的例子中,我试图更新一个现有的关系,但这给了我一个唯一的键违规,因为该关系已经存在,所以我首先需要删除所有现有的关系,然后添加我更新的用户的关系: