【发布时间】:2021-11-01 17:21:08
【问题描述】:
请帮帮我。我真的不明白它是如何工作的 我有一个名为 Product 的实体,它与另一个名为 Car 的实体具有多对多关系,并启用了级联 true 标志。
@Entity()
export class Product {
@PrimaryGeneratedColumn()
id: number
@ManyToMany(() => Car, { cascade: true })
@JoinTable()
cars: Car[]
}
Car 实体不包含对 Product 实体的引用。这意味着就像我认为这种关系是单向的。 所以,当我保存一个产品时,我会为这个产品设置汽车:
const cars = await this.carService.getByIds(createProductDto.cars)
const newProduct = this.productsRepository.create({
...createProductDto,
cars
})
await this.productsRepository.save(newProduct)
我通过 id 获取汽车实体并将它们保存到产品中。这很好用。我不确定这是不是最好的方法,但我不知道其他方法。
当我尝试更新数据库中的一些现有产品时,问题就出现了。 我得到了休闲错误:
ERROR [ExceptionsHandler] duplicate key value violates unique constraint "PK_f7b49d8fd8d09ea2fc2e7542f3f"
或
Error: Cannot query across many-to-many for property cars
或其他... 请帮帮我。我想了解处理这种关系的最佳方式是什么。创建、更新和删除它的最佳方法是什么。 谢谢
【问题讨论】:
标签: javascript postgresql nestjs typeorm