我如何创建或更新另一个实体上的一个实体已创建

时间:2021-04-09 09:39:12

标签: javascript mysql typescript nestjs typeorm

非常感谢您的帮助

我的数据库中有几个表:商店、销售和库存,我想在销售表中保存新销售时更新库存。

有我的实体 销售

@Entity()
export class Sale {
  @PrimaryGeneratedColumn()
  id: number

  @ManyToOne((type) => Store, (store) => store.sales)
  store: Store

  @Column()
  productId: number

  @Column()
  user: number

  @Column()
  count: number

  @Column()
  sum: number

  @CreateDateColumn()
  createDate: Date
}

库存

@Entity()
export class Stock {
  @PrimaryGeneratedColumn()
  id: number

  @Column()
  product: number

  @ManyToOne((type) => Store, (store) => store.stocks)
  store: Store

  @Column()
  count: number
}

库存实体包含产品 ID 和商店 ID, 销售实体也包含这些财产。我想要的是? 好吧,当我保存在 db new sale 中时,我想在 stock.product = sale.product 和 stock.store = sale.store 的 stock 表中找到项目,然后像这样更新它的计数字段 stock.count =库存计数 + 销售计数。这可能吗?

我可以使用销售服务中的库存服务并实现这个逻辑,但我认为会有一个更干净的方法......

1 个答案:

答案 0 :(得分:0)

每次对您的销售实体执行操作时,使用级联在双方进行保存、更新和删除 注意 => 级联仅在一侧工作 => 销售侧

@Entity()
export class Sale {
  @PrimaryGeneratedColumn()
  id: number

  @ManyToOne((type) => Store, (store) => store.sales , {cascade : true})
  store: Store

  @Column()
  productId: number

  @Column()
  user: number

  @Column()
  count: number

  @Column()
  sum: number

  @CreateDateColumn()
  createDate: Date
}