Swift Firebase Firestore查询

时间:2018-11-17 14:11:14

标签: swift firebase google-cloud-firestore

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())")
    }
}

我对此代码有疑问。

如果我编译这段代码,那将是错误的。

我要检索包含“粉红色”或“蓝色”的数据。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

  

Cloud Firestore不支持:逻辑或查询。在这种情况下,您应该为每个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())")
             }
         }
     }