是否可以检查是否有尚未同步的数据尚未同步到Firestorage?

时间:2018-10-05 14:02:50

标签: google-cloud-firestore react-native-android

我正在使用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.');
}

干杯!

1 个答案:

答案 0 :(得分:1)

为解决此问题,建议您使用以下代码行:

var source = snapshot.metadata.fromCache ? "local cache" : "server";
  

这不是仅在Firestore尝试将数据写入数据库时​​触发吗?

否,它只会帮助您在读取时检查是从服务器还是从缓存接收数据,而不是在写入数据时检查。是的,您可以在每次查询时进行检查,以查看数据的来源并采取相应的措施。

  

但是当脱机队列中的数据同步时还会发生事件吗?

是的。如果您连接了一个完整的lisner,它就是这样做的。请注意,如果您的设备无法访问Firestore后端,则不会调用成功侦听器或失败侦听器。一旦数据提交到Firebase服务器或被Firebase服务器拒绝,将仅成功调用成功/失败侦听器。