我正在使用 Akita 实体数据存储在 Angular 应用程序的前端缓存数据。
在我的服务中,我有一些类似这样的功能:
setPropertyOfEntity(entityId, newValue): void {
store.update(entityId, {propertyName: newValue});
this.saveEntity(store.getEntity(entityId));
}
saveEntity(entity) {
httpClient.put(url, entity).subscribe((savedEntity) -> {
store.upsert(savedEntity.id, savedEntity)
});
}
现在,可以理解的是,当实体在商店中更新时,Akita 商店会触发大量事件(属性被设置,保存后更新)。
我觉得我想在保存后更新商店,以防服务器端逻辑对实体产生副作用(在这种情况下确实会发生)。
像这样保持 FE/BE 同步的秋田方式是什么?
我想我可以从商店中获取实体,为其设置值,然后调用 save 函数,但这似乎与 Akita 使用 store.update() 更新对象属性的方式相反。
当 Akita 从它的 getEntity() 函数中重新调整不可变对象时,我最终得到了一些感觉不对的东西(assign(),不使用 akita 内置 store.update())......
setPropertyOfEntity(entityId, newValue): void {
let storeEntity = store.getEntity(entityId);
let mutableEntity = Object.assign(new Entity(), storeEntity)
mutableEntity.property = newValue;
this.saveEntity(mutableEntity);
}