Локально сохраняйте данные с помощью 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 будет работать правильно только на первой вкладке.
То, что вы видите, - это ожидаемое поведение, пока вы не включите постоянство.