首页 > 解决方案 > 检查 Firestore 查询 (whereField isEqualTo) 是否没有找到任何文档

问题描述

我想检查我的 Firestore 查询是否找到了包含我想要的特定字段的任何文档。如果没有,我想继续执行其他代码。

不幸的是,我自己还没有找到解决这个问题的方法。你能帮我吗?

代码:

Firestore.firestore().collection("conversations").whereField("mainUserID", isEqualTo: MainUID)
.whereField("otherUserID", isEqualTo: otherUserId).getDocuments { (snapshot, err) in
                
if snapshot.exists == true {                // Value of type 'QuerySnapshot?' has no member 'exists'
                        
                        
} else {
       
       }
}

标签: iosswiftfirebasegoogle-cloud-firestore

解决方案


从文档

FIRQueryDocumentSnapshot 包含从 Firestore 数据库中的文档读取的数据,作为查询的一部分。保证文档存在,并且可以使用 data 属性或使用下标语法访问特定字段来提取其数据。

FIRQueryDocumentSnapshot 提供与 FIRDocumentSnapshot 相同的 API 界面。由于查询不会返回已删除的文档,因此它的 exists 属性将始终为 true,而 data: 永远不会返回 nil。

重要的是这个

保证文件存在

因此,由于快照的保证存在,因此 .exists 选项没有意义。

一种方法是检查快照中有多少文档

if docs.count > 0 {
   //there are docs
} else {
   //there are no docs
}

推荐阅读