其他用户触发了firebase onSnapshot

时间:2018-09-13 05:46:04

标签: firebase google-cloud-firestore

我正在制作一个Firebase应用程序,在我的应用程序内部,我在帖子中有一个侦听器,它是文档帖子的子集合

 firebase.firestore().collection('posts').doc(post.id).collection('commentaries').orderBy('date', 'desc').limit(12)
        .onSnapshot(function (querySnapshot) {
          let commentaries = []
          console.log(querySnapshot.docChanges())
          querySnapshot.forEach(function (doc) {
            commentaries.push({
              id: doc.id,
              creatorId: doc.data().creatorId,
              commentarie: doc.data().comment,
              creatorPhoto: doc.data().creatorPhoto,
              creatorName: doc.data().creatorName,
              date: doc.data().date
            })
          })
        })

问题是:

其他用户正在调用我的onSnapshot!如果其他用户对其他帖子(而不是post.id)发表评论,则将调用onSnapshot(因为它将检测根集合“ posts”而不是子集合中的更改)。

出问题了吗? 我的用户正在从集合“帖子”中的所有更改中获取更新!!!

1 个答案:

答案 0 :(得分:0)

在查询的参数范围内,

您的快照侦听器将针对集合的所有更改进行调用。侦听器不在乎是谁更改了集合。唯一重要的是查询的结果,这些结果将包括与查询的约束匹配的所有文档。

如果对谁进行更改很重要,则必须将其包括在更改的数据中,并更改查询以仅产生与数据匹配的结果。