我正在制作一个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”而不是子集合中的更改)。
出问题了吗? 我的用户正在从集合“帖子”中的所有更改中获取更新!!!
答案 0 :(得分:0)
您的快照侦听器将针对集合的所有更改进行调用。侦听器不在乎是谁更改了集合。唯一重要的是查询的结果,这些结果将包括与查询的约束匹配的所有文档。
如果对谁进行更改很重要,则必须将其包括在更改的数据中,并更改查询以仅产生与数据匹配的结果。