Как удалить данные в отношении @ManyToMany в Nest. js - PullRequest
0 голосов
/ 18 марта 2020

У меня есть ManyToMany отношение между двумя сущностями

@Entity()
export class Device{

  @PrimaryColumn()
  Name:string;


  @Column({ nullable: true})
  Port:number;

  @Column({ nullable: true})
  IPadress:string;

  @Column({ nullable: true})
  Location:string;

  @ManyToMany(type => User)
    @JoinTable()
    users: User[];

  }

@Entity()
export class User{

  @PrimaryColumn()
  Id:number;
  @Column({ nullable: true})
  Departement:string;
  @Column({ nullable: true})
  FirstName:string;
  @Column({ nullable: true})
  LastName:string;
  @Column({ nullable: true})
  CardNumber:string;
  @Column({ nullable: true})
  MobilePhone:string;

}

Я хочу знать, как я могу удалить устройство с пользователями и как я могу удалить только пользователей с устройства

1 Ответ

2 голосов
/ 20 марта 2020

Я думаю, что двусторонние отношения между объектами должны работать:

@Entity()
export class Device{

  @PrimaryColumn()
  Name:string;    

  @Column({ nullable: true})
  Port:number;

  @Column({ nullable: true})
  IPadress:string;

  @Column({ nullable: true})
  Location:string;

  @ManyToMany(type => User, users => users.devices { cascade: true })
    @JoinTable()
    users: User[];

  }

@Entity()
export class User{

  @PrimaryColumn()
  Id:number;
  @Column({ nullable: true})
  Departement:string;
  @Column({ nullable: true})
  FirstName:string;
  @Column({ nullable: true})
  LastName:string;
  @Column({ nullable: true})
  CardNumber:string;
  @Column({ nullable: true})
  MobilePhone:string;
  @ManyToMany(type => Device, device => device.users)        
    devices: Device[];
}

Я полагаю, вы уже установили свой источник данных, поэтому вы можете удалить только пользователя с помощью:

db.getRepository(User).delete(userId);

и когда вы удаляете одно устройство, оно удалит всех связанных с ним пользователей:

db.getRepository(Device).delete(deviceId);
...