Сущность удалена из кеша, несмотря на ошибку при УДАЛЕНИИ

Я использую Angular 8 с @ngrx/data для управления своими объектами. Когда я инициирую операцию удаления, которая завершается неудачно (сервер возвращает 500), объект удаляется из кеша на стороне клиента ngrx, несмотря на то, что он не удаляется на сервере.

Как предотвратить удаление объекта из кеша при ошибке? Или как мне повторно добавить (не) удаленный объект обратно в кеш при ошибке?


person Aviad P.    schedule 29.06.2019    source источник


Ответы (1)


Используйте пезимистическое сохранение https://ngrx.io/guide/data/entity-change-tracker#save-errors

EntityActions, имена операций которых заканчиваются на _OPTIMISTIC, начинают оптимистичное сохранение.

Многие приложения легче создавать, когда сохранения «оптимистичны», потому что изменения немедленно становятся доступными для кода приложения, который наблюдает за селекторами коллекций. Приложению не нужно ждать подтверждения успешного выполнения операции объекта на сервере.

Пессимистичное сохранение не обновляет хранилище до тех пор, пока сервер не подтвердит, что сохранение выполнено успешно, что NgRx Data затем превращает в действие «УСПЕХ», обновляющее коллекцию. При пессимистичном сохранении изменения не будут доступны в магазине

person Xesenix    schedule 29.06.2019
comment
Спасибо, мне потребовалось время, чтобы понять, как именно это сделать, но это решение. Спасибо. Для тех, кто заинтересован, метод delete службы сущностей принимает второй аргумент опций, который включает флаг оптимизма / пессимизма. - person Aviad P.; 30.06.2019
comment
для тех, кто придет позже, соответствующая перегрузка выглядит так: delete(key: number | string, options?: EntityActionOptions) и параметры выглядят так: ngrx.io/api / data / EntityActionOptions - person BlackICE; 25.02.2021