使远程更改后恢复客户端缓存失效



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

但是,如果我通过云函数或使用 Firestore 管理员 SDK 远程更改文档的数据,则客户端不会收到使缓存失效的通知,即使数据已过时,也会从缓存中检索数据。我假设Firebase内部有一些逻辑来标记文档是否同步。

Firebase 是否支持将特定文档标记为"过时",从而强制客户端自动使其缓存失效?

如果不是,我必须通知我的客户通过.clearPersistence()手动使其缓存失效。我考虑了以下但不太方便的选择:

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

是否有其他更有效和更方便的选项来实现相同的功能?

但是,如果我通过云函数或使用 Firestore 管理员 SDK 远程更改文档的数据,则客户端不会收到使缓存失效的通知,即使数据已过时,也会从缓存中检索数据。

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

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

最新更新