android - 将本地 Firestore 缓存与服务器显式同步
问题描述
我正在使用 Firestore DB,需要知道是否有任何方法可以将数据从本地缓存显式同步到服务器。因为我可以看到一些时间文件快照。metadata.HasPendingWrite() 为真。
有没有办法获得待处理的文档计数或从待处理的文档中获取这些文档?
解决方案
根据有关Firestore 离线持久性的官方文档:
对于 Android 和 iOS,默认启用离线持久性。
这意味着在离线时,尚未同步到服务器的挂起写入保存在本地缓存中的队列中。这也意味着:
metadata.hasPendingWrite()
将返回“true”,因为所有这些写入都处于“挂起”状态。一旦设备重新连接,队列中的所有内容都将与 Firebase 服务器同步,反之亦然。
我正在使用 Firestore DB,需要知道是否有任何方法可以将数据从本地缓存显式同步到服务器。
没有必要明确地做某事。Firestore 会自动为您执行此操作。
有没有办法获得待处理的文档计数或从待处理的文档中获取这些文档?
是的,您可以创建一个查询,并仅计算处于“待处理”状态的文档。基本上,尚未与 Firebase 服务器同步的文档。
编辑:
假设您有一个产品集合,并且您想要获取处于“待处理”状态的文档计数,请使用以下代码行:
productsRef.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.w(TAG, "Listen failed.", e);
return;
}
int count = 0;
for (QueryDocumentSnapshot doc : value) {
if (doc.getMetadata().hasPendingWrites()) {
count++;
}
}
Log.d(TAG, "count: "+ count);
}
});
推荐阅读
- java - 返回列表
来自 Rest 网络服务 - python - 多处理不使用所有内核
- javascript - 我无法更改状态字段
- reactjs - 使用 jest 在 componentDidMount 中反应测试 axios 获取请求
- python - 如何让输出在 Python 3 中垂直打印而不是水平打印?
- javascript - 在javascript中添加带有前导零的数字字符串
- python - 烧瓶管理员一对一 inline_models
- javascript - 调用 PHP 函数表单 Javascript 后页面不加载
- machine-learning - 将神经网络输出转换为类
- python-3.x - 将 2455 个 CSV 文件(42GB)作为熊猫数据框加载时出现 Python 内存错误