如何解决Mikro ORM:什么是追加收藏的最佳方法?
在以下情况下,整个SalesOrder
实体被传递到服务器
销售订单实体的项目集合可以具有新项目,已删除项目和已更新项目。
只是坚持SalesOrder
不起作用(不会删除或更新)
这就是我让它工作的方式。有没有更好的办法?还是我错过了什么?
async save(@Body() item: SalesOrder) {
let result: SalesOrder;
result = await em.getRepository<SalesOrder>(SalesOrder).findOne(item.id);
item.items.forEach(k => k.salesOrder = item.id)
await this.em.getRepository(SalesOrderItem).nativeDelete({ salesOrder: item.id })
for (const [i,it] of item.items.entries()) {
const x = em.getRepository(SalesOrderItem).create({ ...it })
await em.persistAndFlush(x)
}
wrap(result).assign({ ...item,items: null },{})
await em.getRepository(SalesOrder).persistAndFlush(result);
await em.flush()
}
@Entity()
export class SalesOrder extends BaseEntity {
@PrimaryKey( )
id: number;
@OnetoMany(i => SalesOrderItem,t => t.salesOrder,{ eager: true,cascade: [Cascade.ALL] })
items = new Collection<SalesOrderItem>(this);
}
@Entity()
export class SalesOrderItem extends BaseEntity {
@ManyToOne({ entity: () => InventoryItem,eager: true,primary: true })
item: IdentifiedReference<InventoryItem>;
@Property({ type: JsonType,columnType: 'jsonb',nullable: true })
configuration?: SalesOrderItem[]
@ManyToOne({ entity: () => SalesOrder,hidden: true,primary: true })
salesOrder: IdentifiedReference<SalesOrder>;
@Property({ nullable: false })
qty: number;
@Property({ nullable: false })
unitPrice: number;
[PrimaryKeyType]: [string,string]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。