我认为我是对的,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,我可以在数据库上有一个监听器,同时最初也加载了所有数据。
感谢。
答案 0 :(得分:2)
在Firestore中,API略有不同,但您正在寻找的信息和功能仍然可用。
Firestore中只有一种类型的侦听器,您可以通过调用addSnapshotListener
来附加它。这会立即触发初始值,然后再触发数据的任何更改。
当快照侦听器触发时,您会收到QuerySnapshot,其中包含有关该数据更改的更新数据和信息。更改封装在documentChanges
array中。每个人DocumentChange
都有type
,表示文档是否已添加,删除或修改。
可以在FirebaseUI for Android中找到有关其工作原理的简单示例。 FirebaseUI iOS library listens to the same protocol,但不知怎的,我发现解析它正在做的事情要困难得多。