远程更改后,无效的Firestore客户端缓存

时间:2019-09-26 09:24:10

标签: android firebase caching google-cloud-firestore

我正在使用.setPersistenceEnabled(true)在Android项目中使用具有缓存支持的Firebase Firestore客户端库。如果我直接从Android代码修改Firestore数据库,则Firebase可以很好地同步并从服务器获取数据。

但是,如果我通过Cloud函数或使用Firestore Admin SDK远程更改文档的数据,则不会通知客户端使缓存无效并从缓存中检索数据,即使它们已过时。我假设Firebase里面有一些逻辑,这些逻辑可以标记文档是否同步。

Firebase是否支持将特定文档标记为“过时”,从而迫使客户端自动使缓存无效?

如果不是,我必须通知我的客户通过.clearPersistence()手动使他们的缓存无效。我考虑了以下方法,但没有那么方便:

  • 使用FCM发送推送通知
  • 使用Firebase远程配置参数

还有其他更有效,更方便的选项来实现相同的功能吗?

1 个答案:

答案 0 :(得分:0)

  

但是,如果我通过Cloud函数或使用Firestore Admin SDK远程更改文档的数据,则不会通知客户端使缓存无效,并且即使缓存已过期也不会从缓存中检索数据。

事实证明,我以错误的方式获取了数据。我有一个包含多个文档的集合,我查询了.collection("users").get()之类的数据,并通过手动处理每个documentSnapshot对其进行了序列化。这就是客户端获取缓存的过时数据的原因。

在我通过查询诸如.collection("users").document("userId").get()之类的特定文档获取数据之后,客户端使缓存无效并从网络中检索了正确的数据。