uwa*_*lla 5 algorithm firebase swift firebase-realtime-database google-cloud-firestore
Firestore中有什么方法可以获取单个数组中的数据列表,例如..在RealTimeDatabase中,我们通过调用单个值而不是使用ForEachLoop来获取Data数组...例如,在realtimeDatabase中,我们通过以下方式获取值:
var PersonObjArrays : [Person] = [ ] ()
Database.database().
reference.child("personFullname").observe( .childAdded.
, with : { (snapshot) in
let snapShotValue = snapshot.value
let firstname = snapShotValue["firstname"] as! String
let lastname = snapShotValue["lastname"] as! String
let personObj = Person( firstname ,lastname)
self.messageArray.append(personObj)
Run Code Online (Sandbox Code Playgroud)
但是在Firestore中,我们必须使用ForLoop .....例如,在Firestore中,我们使用了
FireStore.firestore()
.collection("personFullname").
getDocuments { (snapshot , error ) in
for document in snaphot.document {
let data = document.data( )
let firstName = data["firstname"] as! String
let lastnamNname = data["lastname"] as! String
let personObj2 = Person( firstName , lastName)
self.messageArray.append(personObj2)
}
Run Code Online (Sandbox Code Playgroud)
那么有什么方法可以将Firestore的数据作为整个ObjectArray获取
Firebase 实时数据库始终返回一个DataSnapshot. 即使结果保证是一个列表,您也会返回 a DataSnapshot,其中每个子节点都是该列表中的一个元素。
Cloud Firestore 对于单个结果与结果列表返回不同的类型。对于单个结果,Firestore 返回 aDocumentSnapshot或 a QueryDocumentSnapshot,这允许您获取单个文档的值(和元数据)。对于查询或集合,Firestore 返回一个QuerySnapshot,其中包含/对象的列表。DocumentSnapshotQueryDocumentSnapshot
无法.childAdded从 Cloud Firestore 请求等效项。这是 API 设计者有意进行的更改,因为许多开发人员混淆了 aDataSnapshot可能在结果中扮演的两个角色。
用 RTDB 术语来说,Firestore 始终会触发.value事件,并且您必须循环遍历结果。如果您循环QuerySnapshot.docChanges仅检查type= ,added则QueryDocumentSnapshot.status您将获得与实时数据库的.childAdded.
因此,相当于您的.childAdded听众的内容如下:
FireStore.firestore()
.collection("personFullname")
.getDocuments { (snapshot , error ) in
guard let snapshot = querySnapshot else {
print("Error fetching snapshots: \(error!)")
return
}
snapshot.documentChanges.forEach { diff in
if (diff.type == .added) {
let data = diff.document.data( )
let firstName = data["firstname"] as! String
let lastnamNname = data["lastname"] as! String
let personObj2 = Person( firstName , lastName)
self.messageArray.append(personObj2)
}
}
})
Run Code Online (Sandbox Code Playgroud)
这都是基于文档中的这一部分,所以我强烈建议学习它。
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |