Firestore 是否具有相当于 Firebase 的 childAdded(使用 swift)的侦听器?

Mik*_*ike 5 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.
Run Code Online (Sandbox Code Playgroud)

我用请求填充字典。

但我也想监听对数据库的任何更改以及是否添加了任何请求等,目前我在控制器中有一个单独的监听器进行监听

 let listener = model.defaultStore?.collection("requests")
            .addSnapshotListener { querySnapshot, error in 
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有 childAdded 的等价物,在那里我可以在 db 上有一个侦听器,同时还最初加载了所有数据。

谢谢。

Fra*_*len 8

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

Firestore 中只有一种类型的侦听器,您可以通过调用addSnapshotListener. 这会立即为初始值触发,然后对数据进行任何更改。

当快照侦听器触发时,您将获得一个QuerySnapshot,其中包含更新的数据有关该数据更改的信息。更改封装在一个documentChanges数组中。每个人DocumentChange都有一个type,指示是否添加、删除或修改了文档。

可以在FirebaseUI for Android 中找到有关其工作原理的简单示例。该FirebaseUI的iOS库听同一个协议,但不知何故,我觉得更难解析它在做什么。