Firestore第一个查询

时间:2019-01-07 17:45:04

标签: swift firebase google-cloud-firestore

我正在尝试在firestone中进行第一个查询,但是我无法正确看到结果。有人可以帮我吗?请看一下代码和图片enter image description here

import UIKit
import Firestore
import Firebase

class ViewControllerFirestone: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

       simpleQueries()

    }

    private func simpleQueries() {

        let db = Firestore.firestore()


        let citiesRef = db.collection("cities")


        let myQuery = citiesRef.whereField("state", isEqualTo: "CA")

        print ("My query is retrieving this : \(myQuery)")


    }
}

1 个答案:

答案 0 :(得分:0)

构造查询之后,必须查询数据库-这就是获取数据的方式。返回的数据是具有许多属性的自定义Firestore对象(QuerySnapshot),其中一个是documents,它是另一个自定义Firebase对象(FIRDocumentSnapshot)的数组。您可以在该属性中找到数据所在的位置。 FIRDocumentSnapshot对象具有一个称为get()的方法,可以为您提取数据(您也可以使用更多惯用的字典语法,而不使用get()方法)。在线阅读Firestore文档;它通常很痛苦但很奏效。

import UIKit
import FirebaseFirestore

class ViewControllerFirestone: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        simpleQueries()
    }

    private func simpleQueries() {

        let db = Firestore.firestore()
        let citiesRef = db.collection("cities")
        let myQuery = citiesRef.whereField("state", isEqualTo: "CA")

        myQuery.getDocuments { (snapshot, error) in

            guard let snapshot = snapshot,
                error == nil else { // error
                    return print("database error: \(error!)")
            }

            guard !snapshot.isEmpty else { // no data
                return print("no data")
            }

            // data fetched, loop through documents

            for doc in snapshot.documents {

                guard let stateProperty = doc.get("state") as? String else {
                    continue // continue loop
                }
                print(stateProperty)

            }

        }

    }

}

请注意,这是在后台使用分派队列处理结果的好地方,因为Firestore返回的数据将始终位于主线程上。本示例不使用队列。