Firestore 是不是有相当于 Firebase 的 childAdded(使用 swift)的监听器?

Posted

技术标签:

【中文标题】Firestore 是不是有相当于 Firebase 的 childAdded(使用 swift)的监听器?【英文标题】:Does Firestore have listener that is the equivalent of Firebase's childAdded (using swift)?Firestore 是否有相当于 Firebase 的 childAdded(使用 swift)的监听器? 【发布时间】:2018-05-09 17:12:25 【问题描述】:

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

当我的应用加载时,我使用 Firestore 在数据库上调用以下命令:

   func loadMessageRequests()
        

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

然后我用请求填充字典。

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

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

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

谢谢。

【问题讨论】:

【参考方案1】:

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

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

当快照侦听器触发时,您会得到一个QuerySnapshot,其中包含更新的数据有关该数据更改的信息。更改封装在documentChanges array 中。每个单独的DocumentChange 都有一个type,指示文档是被添加、删除还是修改。

可以在FirebaseUI for android 中找到有关其工作原理的简单示例。 FirebaseUI ios library listens to the same protocol,但不知何故,我发现解析它在做什么要困难得多。

【讨论】:

谢谢@Frank。太好了。

以上是关于Firestore 是不是有相当于 Firebase 的 childAdded(使用 swift)的监听器?的主要内容,如果未能解决你的问题,请参考以下文章

Firestore 查询返回未定义快照的位置(Vue.js / Firestore / Vuefire)

Flutter:Google Maps 如何从 Firestore 设置图标

Firebase Firestore:如何在 Android 上将文档对象转换为 POJO

如何将来自不同组件的 firebase auth 和 Cloud Firestore 用作单个 Firebase 应用程序

是否有任何与 rails ActiveRecord 迁移相当的 Firestore 数据库模式迁移概念?

将图像存储在 Firebase Storage 中并将元数据保存在 Firebase Cloud Firestore(测试版)中