Обновите отношение многие ко многим с помощью TypeORM

1

У меня возникают проблемы с обновлением объекта, который имеет отношение многие ко многим, любопытно, если я делаю что-то не так, или, более конкретно, как правильно это сделать

Рассмотрим следующие объекты...

@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);

Но, увы, предметы не сохраняются на заметку.

Как правильно это сделать?

Спасибо!

Теги:
typeorm

2 ответа

0

По умолчанию для каскадирования установлено значение false, вы можете включить это следующим образом:

@Entity()
export class Note {
@PrimaryGeneratedColumn('uuid')
id: string;

@ManyToMany(() => Subject, (subject: Subject) => subject.notes, { cascade: true })
subjects: Subject[];
  • 0
    note.subjects = [{id:1}, {id:2}]; noteRepo.save(note); потом будет работать.
0

Так что у меня получилось следующее:

  subjectIds.forEach(async id => {
  await connection
    .createQueryBuilder()
    .relation(Note, 'subjects')
    .of(note)
    .add(id);
});

Хотя я все еще чувствую, что метод repo.save() должен работать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню