У меня возникают проблемы с обновлением объекта, который имеет отношение многие ко многим, любопытно, если я делаю что-то не так, или, более конкретно, как правильно это сделать
Рассмотрим следующие объекты...
@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);
Но, увы, предметы не сохраняются на заметку.
Как правильно это сделать?
Спасибо!
По умолчанию для каскадирования установлено значение false, вы можете включить это следующим образом:
@Entity()
export class Note {
@PrimaryGeneratedColumn('uuid')
id: string;
@ManyToMany(() => Subject, (subject: Subject) => subject.notes, { cascade: true })
subjects: Subject[];
note.subjects = [{id:1}, {id:2}]; noteRepo.save(note);
потом будет работать.
Так что у меня получилось следующее:
subjectIds.forEach(async id => {
await connection
.createQueryBuilder()
.relation(Note, 'subjects')
.of(note)
.add(id);
});
Хотя я все еще чувствую, что метод repo.save() должен работать