ngneat/elf-entities单个实体新增或更新的实现疑问
关于ngneat/elf-entities中"存在则更新,不存在则添加"的实现方案
问题背景
我正试图深入理解ngneat/elf-entities,目前对其中三个方法存在困惑。现有代码示例如下:
public set(tanks: Tank[]) { store.update(setEntities(tanks)); } public update(tank: Tank) { store.update(updateEntities(tank.tankNumber, tank)); } public add(tank: Tank) { store.update(addEntities(tank)); }
据我理解,setEntities可更新或添加多个Tank实体,updateEntities仅能更新单个实体,addEntities仅能添加单个实体。
我有一个特定业务场景:当Tank实体不存在时添加它,若已存在则更新它。但使用addEntities时,若实体已存在会报错;调用updateEntities时,若存储为空则无任何效果,且我仅处理单个实体,无法调用set方法,想请教该如何实现需求?
解决方案
直接使用elf-entities内置的upsertEntities方法即可,它专门适配"存在则更新,不存在则添加"的场景,单个实体也能直接使用。
修改后的代码示例:
public upsert(tank: Tank) { store.update(upsertEntities(tank)); }
方法说明
upsertEntities会自动根据你配置的实体唯一标识(这里是tankNumber)判断实体是否存在:- 若实体已存在,则执行更新操作
- 若实体不存在,则执行添加操作
- 该方法同时支持传入单个实体或实体数组,完全覆盖单实体处理的需求
内容的提问来源于stack exchange,提问作者zabse
相关产品推荐
相关产品推荐

