【问题标题】:Swift firebase firestore querySwift firebase firestore 查询
【发布时间】:2018-11-17 14:11:13
【问题描述】:
var selectedColor: String = "pink"
var selectedScore: String = "-"
let pillsRef = db.collection("pills")
pillsRef
.whereField("pillColor", isEqualTo: "pink")
.whereField("pillColor", isEqualTo: "blue")
.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
print("\(document.documentID) => \(document.data())")
}
}
我对此代码有疑问。
如果我编译这段代码,就会出错。
我想检索包含“粉红色”或“蓝色”的数据。
我该怎么做?
【问题讨论】:
标签:
swift
firebase
google-cloud-firestore
【解决方案1】:
Cloud Firestore 不支持:逻辑 OR 查询。在这种情况下,您应该为每个 OR 条件创建一个单独的查询,并在您的应用中合并查询结果。
所以你需要先查询第一种颜色,然后再查询第二种颜色,然后合并结果:
pillsRef
.whereField("pillColor", isEqualTo: "pink")
.getDocuments() { (document, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
print("\(document.documentID) => \(document.data())")
pillsRef.whereField("pillColor", isEqualTo: "blue").getDocuments() { (document2, err2) in
if let err2 = err2 {
print("Error getting documents: \(err)")
} else {
// here you get your data for blue color
print("\(document2.documentID) => \(document2.data())")
}
}
}