我正在尝试在firestone中进行第一个查询,但是我无法正确看到结果。有人可以帮我吗?请看一下代码和图片
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)")
}
}
答案 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返回的数据将始终位于主线程上。本示例不使用队列。