Локально сохраняйте данные с помощью firestore и синхронизируйте позже

Я столкнулся с проблемой интеграции автономного поведения Google Firestore в мое полимерное приложение.

Я создал элемент для предварительной работы всей базы данных с помощью firestore. Я инициализировал соединение в конструкторе и ниже приведен код.

constructor() {
            super();
            if (!this.db) {
                firebase.firestore().enablePersistence()
                    .then(() => {
                        this.db = firebase.firestore();
                    })
                    .catch((err) => {
                        if (err.code == 'failed-precondition') {
                        } else if (err.code == 'unimplemented') {
                        }
                    });
            }
        }

Я создал еще одну функцию, которая сохраняет данные пользователя в firestore.

saveUserAndSync() {
            this.db.collection("users").add(this.userObj)
                .then(function (docRef) {
                    console.log("Document written with ID: ", docRef.id);
                })
                .catch(function (error) {
                    console.error("Error adding document: ", error);
                });
        }

Это прекрасно работает, даже если он не в сети. Самая большая проблема, с которой я сталкиваюсь, - это если приложение находится в автономном режиме, и я создаю пользователя, и в то же время, если я перезагружаю страницу, все данные теряются, и синхронизация с firestore не работает.

Может кто-нибудь предложить обходной путь для этого.

Я смог сделать ту же реализацию, используя pouchDB и couchDB, поскольку pouchDB api сначала сохранит данные локально, а затем синхронизирует их с couchDB.

Но с пожарным магазином это не получается.

1 ответ

Для веб-приложения автономное хранилище не включено по умолчанию. Из документации:

Для Интернета автономное сохранение по умолчанию отключено. Чтобы включить постоянство, вызовите метод enablePersistence. Кэш Cloud Firestore не очищается автоматически между сессиями. Следовательно, если ваше веб-приложение обрабатывает конфиденциальную информацию, не забудьте спросить пользователя, находится ли он на доверенном устройстве, прежде чем включать постоянство.

Важное замечание. Для Интернета автономное сохранение - это экспериментальная функция, которая поддерживается только веб-браузерами Chrome, Safari и Firefox. Кроме того, если пользователь открывает несколько вкладок браузера, которые указывают на одну и ту же базу данных Cloud Firestore, и автономное сохранение включено, Cloud Firestore будет работать правильно только на первой вкладке.

То, что вы видите, - это ожидаемое поведение, пока вы не включите постоянство.

Другие вопросы по тегам