Javascript Firebase onSnapshot仅返回更改的项目

Javascript Firebase onSnapshot仅返回更改的项目,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,这是我在stackoverflow上的第一篇文章,我正在寻求一些帮助,因为我对这个问题已经挠头有一段时间了 我目前正在使用Firebase开发一个web应用程序,并使用onSnapshot方法。目前,我正在从数据库返回一个用户列表 . 下面是我填充UI的函数 db.collectionGroup('items').where("userid", "==", user.id).orderBy('date', "desc").limit(8

这是我在stackoverflow上的第一篇文章,我正在寻求一些帮助,因为我对这个问题已经挠头有一段时间了

我目前正在使用Firebase开发一个web应用程序,并使用
onSnapshot
方法。目前,我正在从数据库返回一个用户列表 . 下面是我填充UI的函数

db.collectionGroup('items').where("userid", "==", user.id).orderBy('date', "desc").limit(80).onSnapshot(snapshot => {

 snapshot.docChanges().forEach(change => {
    if (change.type === 'added') {
       setupLedger(snapshot.docs, doc.id)
    }    
    if (change.type === 'modified') {
       setupLedger(snapshot.docs, doc.id)
    } 
    if (change.type === 'removed') {
       deleteLedger(user, doc.id);
    }
 });
});
在页面加载时,我使用
类型:“added”
()

我的问题发生在我单击编辑(即修改)时,它只返回修改后的条目并更新修改后的条目()。但是如果我在另一个字段上单击
EDIT
,它将显示上一个条目,而不是当前条目()。我如何才能更改我的方法,以便获得所有条目,包括修改的条目?本质上,我只想更新当前项,一旦它更新,我想返回数组(带有修改的项)


(旁注:如果我刷新页面,数组将返回修改后的项目,一切正常。)

所有受查询影响的文档(无论是否修改),都可以通过
快照访问。文档
,而有关更改文档的额外信息可以通过
快照.docChanges()
访问。因此,考虑将代码更改为这样的:

db.collectionGroup('items')。其中('userid',“==”,user.id)。orderBy('date',“desc”)。limit(80)。onSnapshot(快照=>{
snapshot.docs.forEach(doc=>{
...
}
}

谢谢Jay;如果我错了,请纠正我,但我想我明白了,docChanges()只返回修改后的元素,而docs实际上从文档中获取所有元素。是的,在第一时间,所有返回的文档都标记为“已添加”,因此都包含在
文档和
docChanges()中