在Firestore中获取数据

时间:2019-07-18 03:29:42

标签: ios swift firebase firebase-realtime-database google-cloud-firestore

在Firestore中有什么方法可以获取单个数组中的数据列表,例如..在Firebase RealTimeDatabase中,我们通过调用单个值而不是使用ForEachLoop来获取数据列表...例如,在realtimeDatabase中,我们通过:

var messageArray  : [Message] = [ ] ()

Database.database().reference.child("messages").observe( .childAdded , with : { (snapshot) in 
    let snapShotValue = snapshot.value

    let text = snapShotValue["text"] as! String
    let username = snapShotValue["username"] as! String

    let message = Message( text ,username)

    self.messageArray.append(message)
}

但是在Firestore中,我们必须使用ForLoop,这样就可以了,但是在某些情况下,我必须在Firestore中使用RealTimeDatabase选项.....例如,在Firestore中,我们使用了:

FireStore.firestore().collection("messages").getDocuments { (snapshot , error ) in 

    for document in snaphot.document {

        let data = document.data( )
        let text = data["text"] as! String
        let username = data["username"] as! String


        let message = Message( text , username)
        self.messageArray.append(message)
     }
}

那么有什么办法可以像将FireBase RealTimeDatabase一样将Firestore的数据作为整个ObjectArray获取

1 个答案:

答案 0 :(得分:0)

您可以将所有对象数据存储在这样的数组中:

let allData = snapshot.documents.compactMap { $0.data() }