Typeorm обновляет запись в отношении OneToMany

#postgresql #nestjs #typeorm

#postgresql #nestjs #typeorm

Вопрос:

У меня есть следующие две сущности с отношением OneToMany / ManyToOne между ними:

 @Entity({ name: 'user' })
export class User {
  @PrimaryGeneratedColumn('increment')
  id: number;

  @Column({ type: 'varchar' })
  firstName: string;

  @Column({ type: 'varchar' })
  lastName: string;

  @ManyToOne(() => Group, group => group.id)
  @JoinColumn({ name: 'groupId' })
  group: Group;

  @Column({ type: 'integer' })
  groupId: number;
}
  
 @Entity({ name: 'group' })
export class Group {
  @PrimaryGeneratedColumn('increment')
  id: number;

  @Column({ type: 'varchar' })
  name: string;

  @OneToMany(() => User, user => user.group)
  members: User[];
}
  

Когда я создаю новую группу в своем репозитории групп, я могу добавить существующих участников следующим образом:

 const group = new Group();
group.name = 'Test';
group.members = [{ id: 1 }, { id: 2 }]; // user ids
this.save(group);
  

Мне интересно, могу ли я обновить существующие элементы аналогичным образом. Например, если группа с идентификатором 1 имеет двух членов:

 { id: 1, firstName: 'Member', lastName: 'One', groupId: 1 }
{ id: 2, firstName: 'Member', lastName: 'Two', groupId: 1 }
  

Возможно ли обновить элемент через отношение OneToMany аналогично тому, как я их добавляю? Что-то вроде (составление этого):

 const group = await repository.findOne(groupId, { relations: ['members'] });
group.members = [{ id: 1, firstName: 'Updated' }]; // this would update the firstName of member with id 1 if it exists in the relation
repository.save(group);
  

Спасибо!

Комментарии:

1. Вы пробовали опцию {cascade:true} в отношениях?

Ответ №1:

В typeorm нет встроенной функциональности для обновления конкретной связанной сущности из базовой сущности. Однако, если вы хотите это сделать, вы можете добавить общую функцию, которая обновляет базовую таблицу, а также ее отношения.

Комментарии:

1. По-прежнему нет встроенной функциональности? Я думаю, что это довольно важная функциональность?