【发布时间】:2020-09-13 22:05:14
【问题描述】:
我必须在某些特定条件下实时更新数据。即在我的情况下,我必须根据会话 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() 方法而发生的。
【问题讨论】:
标签: javascript angular firebase google-cloud-firestore angularfire2