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

标签 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.

然后我用请求填充字典。

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

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

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

谢谢。

最佳答案

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

Firestore 中只有一种类型的监听器,您可以通过调用 addSnapshotListener 附加它。这会立即触发初始值,并从那时起对数据进行任何更改。

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

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

关于swift - Firestore 是否有相当于 Firebase 的 childAdded(使用 swift)的监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47494419/

相关文章:

ios - 制作仅在特定日期重复的本地通知

ios - 使用 swift 在 ios 中线程之间通信的最佳方式是什么?

firebase - 使用FirebaseUI将Firestore存储到recyclerview中,没有显示数据

c# - 如何使用 .net 核心连接到 Cloud Firestore DB?

javascript - 如何解决 FirebaseError : Expected first argument to collection() to be a CollectionReference, DocumentReference 或 FirebaseFirestore 问题?

java - 如何在firestore中以时间戳的形式保存文本?

swift - 将 NSLocalizedString 的子字符串设置为粗体

ios - 侧边菜单 BarPosition 错误 iOS 9

ios - 在 UITabBarControllerDelegate 中获取当前事件的 viewController

google-cloud-firestore - 为离线 webapp Firestore 保存数据