我已经添加了addSnapshotListener
,例如:
doc?.reference.collection("thread")
.order(by: "created", descending: true)
.addSnapshotListener(includeMetadataChanges: true, listener: { (threadQuery, error) in
if let error = error {
print("Error: \(error)")
return
} else {
//print(threadQuery?.documents.count)
for message in threadQuery!.documents {
self.removeAllOverlays()
print("Data: \(message.data())")
}
}
})
每次将新文档添加到thread
时,它将加载完整线程。如何仅获取thread
集合中添加的新文档?
据此answer,您现在不能这样做。每次它将为您提供整个文档。
提示:如果需要此功能,请使用Firebase Real-time database
为了简单起见,假设有这样的用户集合
users
doc_0
name: "Pete"
doc_1
name: "Lewis"
doc_2
name: "Clark"
以下代码将观察者附加到用户节点,并在添加,修改或删除用户时通知我们。注意,在第一次运行时,它将遍历每个用户,一次迭代并添加.fire,这将使您可以初始填充一个数组。
func observeUserChanges() { let usersCollectionRef = self.db.collection("users") usersCollectionRef.addSnapshotListener { querySnapshot, error in guard let snapshot = querySnapshot else { print("Error fetching snapshots: \(error!)") return } snapshot.documentChanges.forEach { diff in let userName = diff.document.get("name") as? String ?? "No Name" if (diff.type == .added) { print("Added user: \(userName)") } if (diff.type == .modified) { print("Modified user: \(userName)") } if (diff.type == .removed) { print("Removed user: \(userName)") } } } }
第一次运行时输出此>
Added user: Pete Added user: Lewis Added user: Clark
然后添加新用户时,我们会看到此
Added user: Ted
删除Ted时]
Removed user: Ted