NgRx +实体+ Firestore-当我不想一次加载所有实体时如何处理?

时间:2018-09-29 10:20:31

标签: google-cloud-firestore ngrx ngrx-entity

假设有任务和项目。有时用户想要查看他/她的所有任务,有时希望查看属于某个项目的任务。在开始加载所有任务时,所有这些不同的视图都可以使用NgRx选择器从任务实体集合中获取必需的内容(同时NgRx效果+ Firestore stateChanges将负责更新)。

但是,如果我不想在一开始就加载所有任务(因为任务太多),应该如何解决该问题?

我应该只在任务实体集合中存储“当前视图的列表”,而当用户切换到另一个视图时将其清空吗?

我应该加载当前必需的内容,将其附加到任务实体集合并使用选择器吗?但是,以这种方式,我不确定如何处理更新(因为我猜想在所有prevoius查询上监听stateChanges可能有点过头)。

还有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

这里可能没有对或错的答案,但这是我们的处理方法:

  • 具有实体列表,并在需要加载新实体时将其添加到列表中
  • 相同的列表还可以在需要时更新实体(@ ngrx / entities upsertMany使得此操作很容易)
  • 有一个“当前列表”,其中存储了可见实体ID。
  • 具有一个选择器,可根据可见实体ID来选择当前实体

状态如下:

{
   entities: {...},
   entitiesById: {...},
   visibleEntitiesIds: {...}
}