我在Firestore 实时监听器文档上看到,我们可以查看快照之间的更改,并查看每个文档是否被添加、删除或修改。
我想知道如果我仅将
onSnapshot
附加到单个文档,是否可以看到更改类型?
我尝试在单个文档侦听器上运行
docChanges()
方法:
db.collection("matching").doc("user1").onSnapshot(async doc => {
doc.docChanges().forEach(function(change) {
if (change.type === "added") {
console.log("added: " + change.doc.data());
}
})
})
但是它产生了错误:
Uncaught (in promise) TypeError: doc.docChanges is not a function
我认为我根本无法在单个文档监听器上运行
docChanges()
。在这种情况下,如何查看单个 firestore doc 实时监听器的更改?
不会,API 不会向您指示快照之间哪些数据或字段发生了变化。 每次文档中任何地方发生更改时,您都会收到回调。 您必须比较之前和当前的快照才能自己找出答案。
此
docChanges()
方法适用于在集合上运行的侦听器,而不是文档,因此,如果您想检查快照之间的更改,请将 docChanges()
放在集合引用后面。
虽然已确定在使用
doc()
设置侦听器时无法检查更改类型,但您可以使用带有 onSnapshot()
的经典查询来使用必要的侦听器功能。
const q = query(
collection(db, <your_collection_name>),
where(documentId(), '==', <your_document_id>)
)
onSnapshot(q, (snapshot) => {...your listener code here})