NgRx + Entities + Firestore - как с этим бороться, если я не хочу загружать все сущности одновременно? - PullRequest
0 голосов
/ 29 сентября 2018

Допустим, есть задачи и проекты.Иногда пользователь хочет видеть все свои задачи, а иногда и задачи, относящиеся к определенному проекту.Когда все задачи загружаются в начале, все эти различные представления могут просто использовать селекторы NgRx, чтобы получить то, что необходимо из коллекции сущностей задач (в то же время эффект NgRx + Firestore stateChanges позаботится об обновлениях).

Однако, если я не хочу загружать все задачи в начале (потому что их слишком много), как я должен подходить к проблеме?

Должен ли я хранить только в коллекции сущностей задач только «список текущего представления» и очищать его, когда пользователь переключается на другое?

Должен ли я загрузить то, что необходимо для текущего, добавить егозадавать задачи по сбору сущностей и использовать селекторы?Однако в этом случае я не уверен, как поступать с обновлениями (так как полагаю, что прослушивание stateChanges по всем предварительным запросам может быть немного излишним).

Есть ли лучшие альтернативы?

1 Ответ

0 голосов
/ 30 сентября 2018

Вероятно, здесь нет правильного или неправильного ответа, но вот как мы это делаем:

  • Иметь список объектов и добавлять новые объекты в список, когда их необходимо загрузить
  • Этот же список может также обновлять сущности, когда это необходимо (@ ngrx / entity upsertMany делает это легко)
  • Имеет «текущий список», в котором хранятся идентификаторы видимых сущностей
  • Имеет селекторвыбрать текущие объекты на основе идентификаторов видимых объектов

Состояние выглядит следующим образом:

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