Javascript 使用firestore本地保存数据,稍后再同步
我面临一个将google firestore的离线行为集成到我的聚合应用程序中的问题 我已经创建了一个元素来执行firestore的所有数据库操作。我已经在构造函数中初始化了连接,下面是代码Javascript 使用firestore本地保存数据,稍后再同步,javascript,firebase,google-cloud-firestore,polymer-2.x,polymerfire,Javascript,Firebase,Google Cloud Firestore,Polymer 2.x,Polymerfire,我面临一个将google firestore的离线行为集成到我的聚合应用程序中的问题 我已经创建了一个元素来执行firestore的所有数据库操作。我已经在构造函数中初始化了连接,下面是代码 constructor() { super(); if (!this.db) { firebase.firestore().enablePersistence() .then(() =&g
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的同步将无法工作
有人能为这项工作提出建议吗
我能够使用PockDB和couchDB实现相同的实现,因为PockDB api将首先在本地保存数据,然后将其与couchDB同步
但是firestore会失败。对于web应用程序,默认情况下不会启用脱机存储。从: 对于web,默认情况下禁用脱机持久性。使能 持久性,调用enablePersistence方法。云商店 会话之间不会自动清除缓存。因此,如果 您的web应用程序处理敏感信息,请确保询问用户 如果他们在启用持久性之前在受信任的设备上 重要提示:对于web,脱机持久性是一种实验性功能 这只有Chrome、Safari和Firefox web支持 浏览器。此外,如果用户打开指向的多个浏览器选项卡 相同的云Firestore数据库,并启用脱机持久性, Cloud Firestore只能在第一个选项卡中正常工作
在启用持久性之前,您看到的是预期的行为。我通过调用firebase.firestore().enablePersistence()在构造函数中启用了持久性,但数据仍然不会保存在本地,并且在重新加载页面时会被清除。您好@Doug Stevenson,只是一个小更新。如果应用程序处于脱机状态,我可以使用enablePersistence()使其正常工作。我面临的唯一问题是,如果我重新加载页面,它将无法正常工作。但数据确实存储在firebase的indexedDB中。但同步只有在启动另一个操作时才会发生。有人可以建议我在应用程序重新联机时如何同步吗。或者我缺少使其工作的任何配置。提前谢谢。大家好,只是一个小更新。如果应用程序处于脱机状态,我可以使用enablePersistence()使其正常工作。我面临的唯一问题是,如果我重新加载页面,它将无法正常工作。但数据确实存储在firebase的indexedDB中。但同步只有在启动另一个操作时才会发生。有人可以建议我在应用程序重新联机时如何同步吗。或者我缺少使其工作的任何配置。