Firestore是否具有与Firebase的childAdded(使用swift)等效的侦听器?

时间:2017-11-26 08:48:45

标签: swift google-cloud-firestore

我认为我是对的,Firebase有一个childAdded方法和一个监听器,这意味着第一次加载所有数据,然后每次添加/修改新数据时监听器都会观察/等

使用Firestore我在应用加载时在数据库上调用以下内容:

   func loadMessageRequests()
        {

            defaultStore?.collection("requests").getDocuments() { (querySnapshot, err) in
                if let err = err {
                    print("Error getting documents: \(err)")
                } else
etc.

我填写了一个包含请求的字典。

但我也想听取对db的任何更改,如果有任何请求被添加等等,而且此刻我在控制器中有一个单独的监听器正在进行监听

 let listener = model.defaultStore?.collection("requests")
            .addSnapshotListener { querySnapshot, error in 

我只是想知道是否有一个等效的childAdded,我可以在数据库上有一个监听器,同时最初也加载了所有数据。

感谢。

1 个答案:

答案 0 :(得分:2)

在Firestore中,API略有不同,但您正在寻找的信息和功能仍然可用。

Firestore中只有一种类型的侦听器,您可以通过调用addSnapshotListener来附加它。这会立即触发初始值,然后再触发数据的任何更改。

当快照侦听器触发时,您会收到QuerySnapshot,其中包含有关该数据更改的更新数据信息。更改封装在documentChanges array中。每个人DocumentChange都有type,表示文档是否已添加,删除或修改。

可以在FirebaseUI for Android中找到有关其工作原理的简单示例。 FirebaseUI iOS library listens to the same protocol,但不知怎的,我发现解析它正在做的事情要困难得多。