如何在 Nest.js 中删除 @ManyToMany 关系中的数据
Posted
技术标签:
【中文标题】如何在 Nest.js 中删除 @ManyToMany 关系中的数据【英文标题】:How to delete data in @ManyToMany relation in Nest.js 【发布时间】:2020-06-29 23:55:03 【问题描述】:我在两个实体之间有一个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】:我认为使您的实体关系双向应该有效:
@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);
【讨论】:
谢谢,这救了我以上是关于如何在 Nest.js 中删除 @ManyToMany 关系中的数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在单元测试 Nest.js 中测试抛出新的 HttpException