Firestore收到多个onSnapshot通知

时间:2020-06-12 15:34:02

标签: typescript google-cloud-firestore

最近我在Google Cloud Firestore的集合中更改文档时开始收到多个onSnapshot通知。 第一个是使用doc.metadata.hasPendingWrites==true的预期的本地更改,因此我忽略了这一点,但随后我又使用了doc.metadata.hasPendingWrites==false进行了另一个更改,就好像该文档是由其他客户端远程更改的一样。但是我是唯一接触数据库的人,所以我确定不是那样。

由于我认为其他人已修改了该文档,因此发生这种情况时,所有事情都在我的应用程序中搞砸了。 Firestore docs说,如果您选择仅元数据更改,则可以收到另一条通知,但我没有。 (我尝试将其显式设置为false-不变。)我还检查了.fromCache,但这也是错误的。所以我很困惑!

要保存文档,我只是按常规进行操作:

    await db().collection(collName))
      .doc(id)
      .set(shotData)

和onSnapshot请求看起来像这样:

    if (shotsNotificationsUnsubscribe)
      shotsNotificationsUnsubscribe()

    shotsNotificationsUnsubscribe = db().collection(collnName).onSnapshot(ref => {
      ref.docChanges().forEach(change => {
        const {newIndex, oldIndex, doc, type} = change
        // Ignore modifications from local writes
        if (doc.metadata.hasPendingWrites) {
          console.log(`Ignoring local mod of shot ${doc.data().kind} "${type}"`)
          return
        }
        console.log(`Handling mod of shot ${doc.data().kind} "${type}"`)

这是在使用firebase@7.5.2的打字稿Web客户端中。我得到的是:

Ignoring local mod of shot ShotData "modified"
Handling mod of shot ShatData "modified"

0 个答案:

没有答案