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

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

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

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

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

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


person GUZ    schedule 29.09.2018    source источник


Ответы (1)


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

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

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

{
   entities: {...},
   entitiesById: {...},
   visibleEntitiesIds: {...}
}
person timdeschryver    schedule 30.09.2018