根据Angular中的某些特定条件更新Firestore数据 SnapshotChanges问题

问题描述

我必须在某些特定条件下实时更新数据。即在我的情况下,我必须根据会话ID和用户ID更新数据库cloudfirestore。下面是代码。

let docIdOfNonExistance = this.firestore.collection(
      'testdb',(ref_non_user) =>
        ref_non_user
          .where('userId','>',result.userId)
          .where('sessionId','==',result.sessionId)
    );

    docIdOfNonExistance.snapshotChanges().subscribe((ref_non_user: any) => {
      console.log(ref_non_user);
      ref_non_user.forEach((doc_list) => {
        this.firestore
          .collection('testdb')
          .doc(doc_list.payload.doc.id)
          .update({ status: 'pending' });
      });
    });

一切正常,实时数据正确更新 但是问题是在更新数据后,它会自动恢复到先前的状态。并且发生多次更新。我也尝试过unsubscribe()方法,但是由于unsubscribe方法,这是第二次,数据无法实时更新。

此外,我们可以直接使用docId更新,但是在这里我必须基于sessionId和userId进行更新。

以这种方式使用时,请帮助我,如何自动多次触发。 我发现这主要是由于snapshotChanges()方法引起的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)