DAA*_*DAA 1 android kotlin firebase google-cloud-firestore
我正在使用Firebase Firestore,并且遇到读操作问题:我使用onCompleteListener,在其中,如果操作成功或失败,我将调用不同的回调。问题是,如果存在网络问题,则会调用onCompleteListener,但是task.isSuccessfull返回true!所以我得到一个空的结果,我无法与一个真正的空结果区分开。有什么方法可以将网络问题与空读取区分开吗?
非常感谢你!我的功能如下:
dataBase.collection(COLLECTION)
.whereEqualTo(FIELD, searched)
.get()
.addOnCompleteListener { task: Task<QuerySnapshot> ->
if (task.isSuccessful) {
listenerSuccess(task.result)
} else {
listenerError()
}
}
Run Code Online (Sandbox Code Playgroud)
如果您处于离线状态,客户端将首先尝试连接。一旦确定无法连接,它将尝试get()基于本地数据库中的数据来完成。这是对Firestore的有效操作,所以这就是任务成功完成的原因。
您可以检测,如果结果从VS里面传来直接从服务器上,通过本地缓存来检查元数据:querySnapshot.getMetadata().isFromCache()。从文档:
true如果快照是从缓存的数据而不是有保证的最新服务器数据创建的。如果您的监听器(通过MetadataChanges.INCLUDE)选择了元数据更新isFomCache(),则一旦客户端从后端接收到最新数据,您将收到另一个等于false的快照。
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |