Firestore 实时监听器仅检测单个文档的更改类型

问题描述 投票:0回答:3

我在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 实时监听器的更改?

firebase google-cloud-firestore
3个回答
3
投票

不会,API 不会向您指示快照之间哪些数据或字段发生了变化。 每次文档中任何地方发生更改时,您都会收到回调。 您必须比较之前和当前的快照才能自己找出答案。


0
投票

docChanges()
方法适用于在集合上运行的侦听器,而不是文档,因此,如果您想检查快照之间的更改,请将
docChanges()
放在集合引用后面。


0
投票

虽然已确定在使用

doc()
设置侦听器时无法检查更改类型,但您可以使用带有
onSnapshot()
的经典查询来使用必要的侦听器功能。

const q = query(
  collection(db, <your_collection_name>),
  where(documentId(), '==', <your_document_id>)
)
onSnapshot(q, (snapshot) => {...your listener code here})
© www.soinside.com 2019 - 2024. All rights reserved.