我认为我是对的,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/