【发布时间】:2020-04-04 22:52:51
【问题描述】:
我正在尝试在 iOS (Swift) 上使用 Firestore 查询:
db.collection(FS_PICS)
//.whereField("category", arrayContains: "Animals")
.whereField("category", arrayContains: ["Animals", "Dogs"])
.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
}
}
}
它不返回任何结果
// doesn't work
.whereField("category", arrayContains: ["Animals", "Dogs"])
或与
// doesn't work
.whereField("category", in: ["Animals", "Dogs"])
但我有 8 个结果:
// It works!!
.whereField("category", arrayContains: "Animals")
它不像 OR 甚至不像 AND 那样工作,因为它也不工作:
// It works!!
.whereField("category", arrayContains: ["Animals"])
那么这个函数的思路是什么,我该怎么做才能得到 OR 呢?
【问题讨论】:
-
如果返回文档:
.whereField("category", arrayContains: "Animals"),那么我完全希望它返回至少相同的文档,也许更多:.whereField("category", in: ["Animals", "Dogs"])。您确定in查询没有返回您期望的结果吗? -
我认为这是 Google 文档中的错误。对于[...],它应该是“arrayContainsAny”而不是“arrayContains”
-
@DougStevenson "in" 不返回任何内容。但是 arrayContainsAny: ["Animals"] - 返回相同的结果。
-
您可以单击文档中的代码示例文件的名称并提交拉取请求以修复它。您也可以使用页面右上角的“发送反馈”链接发送反馈。
-
为了大家的娱乐,虽然大家都在思考这个问题并抛出答案,但鬼鬼祟祟的 Firebase 人员修复了文档,所以现在它是正确的。 in and array-contains-any
标签: ios swift firebase google-cloud-firestore