我正在使用Google Firestorage构建一个本机化的android应用程序。该应用程序的用例可能如下:
用户在设备离线时将数据添加到数据库中。稍后,用户将其设备连接到互联网,并且离线数据会自动同步到Firestore。到目前为止,一切都很好。但是在他这样做之前,我想显示一个类似“仍然有未同步的数据。请将您的设备连接到互联网以进行同步”之类的文本。
所以我的问题是:是否可以检查Firestores脱机队列中是否还有尚未同步到在线数据库的数据?
类似
// Device is still offline
if (firestore.offlineQueue.length > 0) {
alert('Hey, you´ve got unsynced data! Please connect your Device to the Internet.');
}
干杯!
答案 0 :(得分:1)
为解决此问题,建议您使用以下代码行:
var source = snapshot.metadata.fromCache ? "local cache" : "server";
这不是仅在Firestore尝试将数据写入数据库时触发吗?
否,它只会帮助您在读取时检查是从服务器还是从缓存接收数据,而不是在写入数据时检查。是的,您可以在每次查询时进行检查,以查看数据的来源并采取相应的措施。
但是当脱机队列中的数据同步时还会发生事件吗?
是的。如果您连接了一个完整的lisner,它就是这样做的。请注意,如果您的设备无法访问Firestore后端,则不会调用成功侦听器或失败侦听器。一旦数据提交到Firebase服务器或被Firebase服务器拒绝,将仅成功调用成功/失败侦听器。