我正在使用.setPersistenceEnabled(true)
在Android项目中使用具有缓存支持的Firebase Firestore客户端库。如果我直接从Android代码修改Firestore数据库,则Firebase可以很好地同步并从服务器获取数据。
但是,如果我通过Cloud函数或使用Firestore Admin SDK远程更改文档的数据,则不会通知客户端使缓存无效并从缓存中检索数据,即使它们已过时。我假设Firebase里面有一些逻辑,这些逻辑可以标记文档是否同步。
Firebase是否支持将特定文档标记为“过时”,从而迫使客户端自动使缓存无效?
如果不是,我必须通知我的客户通过.clearPersistence()
手动使他们的缓存无效。我考虑了以下方法,但没有那么方便:
还有其他更有效,更方便的选项来实现相同的功能吗?
答案 0 :(得分:0)
但是,如果我通过Cloud函数或使用Firestore Admin SDK远程更改文档的数据,则不会通知客户端使缓存无效,并且即使缓存已过期也不会从缓存中检索数据。
事实证明,我以错误的方式获取了数据。我有一个包含多个文档的集合,我查询了.collection("users").get()
之类的数据,并通过手动处理每个documentSnapshot
对其进行了序列化。这就是客户端获取缓存的过时数据的原因。
在我通过查询诸如.collection("users").document("userId").get()
之类的特定文档获取数据之后,客户端使缓存无效并从网络中检索了正确的数据。