Фон:
An Angular 8 PWA SPA. Использует проверку подлинности Firebase. И Firestore как БД. (включая Иони c 4)
Все операции чтения и записи и c выполняются через AngularFire npm.
Здесь и там есть облачные функции, которые выполняют бизнес-логику c.
Все пакеты являются последними.
Сценарий:
Пользователь, находящийся в движении с открытой версией PWA 3.1 в автономном режиме, выполняет обновление документа тип «SampleDo c», ожидающий синхронизации с Firestore.
Пользователь переводит свой ноутбук в спящий режим на выходные.
В выходные выкатывается обновление ПО, которое изменяет структуру документов SampleDo c, в которых БД обновляется до нового формата. Развернута новая версия PWA 4.0.
Пользователь открывает свой ноутбук в понедельник в офисе с WiFi, и изменения применяются к БД, повреждающей данные.
Как это предотвратить?
Я из мира серверов Classi c Spring Boot. Вот как мы это обрабатываем:
Каждый HTTP-запрос, отправляемый на сервер, обнажает заголовок с версией API, называемой примером ApiVersion: 3.1.0
, на сервере есть фильтр которая проверяет текущую версию по сравнению с входящей версией и, если она не совпадает, отклоняет запрос с кодом ошибки HTTP, который веб-приложение знает, что ему необходимо обновить себя. Пользователь уведомил, что изменения не могут быть применены, и пользователь upp обновится.
В случае бессерверной Angular SPA PWA, работающей напрямую с FireStore, нет возможности добавить такой фильтр.
Как правильно решить эту проблему в этом техническом стеке?
Одна из идей - подписаться на do c, который содержит текущую версию DB / APP, но будет приходит уведомление об обновлении До AngularFire попытается применить изменения?
Есть ли способ предотвратить эти изменения?