ios - 检查 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 {
}
}
解决方案
从文档
FIRQueryDocumentSnapshot 包含从 Firestore 数据库中的文档读取的数据,作为查询的一部分。保证文档存在,并且可以使用 data 属性或使用下标语法访问特定字段来提取其数据。
FIRQueryDocumentSnapshot 提供与 FIRDocumentSnapshot 相同的 API 界面。由于查询不会返回已删除的文档,因此它的 exists 属性将始终为 true,而 data: 永远不会返回 nil。
重要的是这个
保证文件存在
因此,由于快照的保证存在,因此 .exists 选项没有意义。
一种方法是检查快照中有多少文档
if docs.count > 0 {
//there are docs
} else {
//there are no docs
}
推荐阅读
- sql - 连接和计算来自不同表的行
- javascript - 使用 apollo-client + firebase auth 刷新令牌
- php - Ublaboo/Datagrid - InlineAdd 行被隐藏
- excel-formula - 引用相交的 Excel 总和
- java - 如何将响应式 ClientResponse 转换为 String?
- sql - 合并重复组的日期范围
- node.js - 我需要帮助使用 ims-lti 节点插件将成绩从提供者发送到消费者
- mysql-connector - How to install MySQL Connector for .NET C# on mac?
- java - 如何使用 CriteriaBuilder 构建带条件的递归连接
- database - 多数据源的数据分片设计