You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:57:12