NgRx + Entities + Firestore - как с этим бороться, если я не хочу загружать все сущности одновременно?
Допустим, есть задачи и проекты. Иногда пользователь хочет видеть все свои задачи, а иногда и задачи, относящиеся к определенному проекту. Когда все задачи загружаются в начале, все эти различные представления могут просто использовать селекторы NgRx, чтобы получить то, что необходимо из коллекции сущностей задач (в то же время эффект NgRx + Firestore stateChanges позаботится об обновлениях).
Однако, если я не хочу загружать все задачи в начале (потому что их слишком много), как мне подойти к проблеме?
Должен ли я хранить только в коллекции объектов задачи только "список текущего представления" и очищать его, когда пользователь переключается на другой?
Должен ли я загрузить то, что необходимо для текущего, добавить его в коллекцию сущностей задач и использовать селекторы? Однако в этом случае я не уверен, что делать с обновлениями (так как полагаю, что прослушивание stateChanges по всем предварительным запросам может быть немного излишним).
Есть ли лучшие альтернативы?
1 ответ
Вероятно, здесь нет правильного или неправильного ответа, но вот как мы это делаем:
- Иметь список объектов и добавлять новые объекты в список, когда они должны быть загружены
- Этот же список также может обновлять сущности при необходимости (@ngrx/entity
upsertMany
делает это легко) - Иметь "текущий список", в котором хранятся идентификаторы видимых объектов
- Иметь селектор для выбора текущих объектов на основе идентификаторов видимых объектов
Состояние выглядит следующим образом:
{
entities: {...},
entitiesById: {...},
visibleEntitiesIds: {...}
}