Google Firestore QuerySnapshot无法返回新增文档问题求助
解决Firestore获取不到新增文档的缓存问题
你的判断没错,这确实是Firestore本地缓存机制导致的。Firestore默认会缓存已获取的数据以提升离线访问体验,当调用不带参数的get()方法时,在部分场景下(比如之前成功拉取过数据、网络状态有波动)会直接返回缓存里的旧记录,而非服务器端的最新数据。
要强制获取服务器端的最新文档,你可以在调用get()时指定数据源为服务器,具体修改如下:
db.collection("posts") .get(Source.SERVER) // 强制从服务器拉取最新数据 .addOnCompleteListener(task -> { if (task.isSuccessful()) { QuerySnapshot querySnapshot = task.getResult(); // Iterate over the documents in the snapshot for (QueryDocumentSnapshot document : querySnapshot) { String title = document.getString("title"); // printing title in logs } } else{ // some else part } });
额外说明:
- 如果你的应用需要兼顾离线场景(无网时仍能访问缓存数据),可以使用
Source.DEFAULT(默认行为:先尝试服务器拉取,失败则 fallback 到缓存),或者改用实时监听APIaddSnapshotListener——文档新增/修改时会自动触发回调,无需手动调用get()。 - 若要清除所有本地缓存数据,可调用
FirebaseFirestore.getInstance().clearPersistence(),但该操作会清空所有缓存内容,需谨慎使用。
内容的提问来源于stack exchange,提问作者Brainwash
相关产品推荐
相关产品推荐

