这是我关于 stackoverflow 的第一篇文章,我正在寻找一些帮助,因为我已经为此挠头了一段时间。我目前正在使用 Firebase 开发 Web 应用程序,并且正在使用该onSnapshot方法。目前,我正在从我的 db UI返回用户列表 。以下是我填充 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); } });});在页面加载时,我使用type: "added" (请参阅此)获取所有必要的数据当我单击EDIT(即修改)时出现我的问题,它仅返回修改后的条目并更新修改后的条目(请参阅此)。但是,如果我单击EDIT另一个字段,它将显示上一个条目,而不是当前条目(请参见 this)。我怎样才能改变我的方法,以便我可以获得所有条目,包括修改后的条目?本质上,我只想更新当前项目,一旦更新,我想返回数组(带有修改后的项目)。(旁注:如果我刷新页面,数组将返回修改后的项目,一切都按预期进行。)
1 回答

慕娘9325324
TA贡献1783条经验 获得超4个赞
受查询影响的所有文档(无论是否修改)都可以通过访问,snapshot.docs而有关已更改文档的额外信息可以通过访问snapshot.docChanges()。因此,考虑将您的代码更改为如下内容:
db.collectionGroup('items').where("userid", "==", user.id).orderBy('date', "desc").limit(80).onSnapshot(snapshot => {
snapshot.docs.forEach(doc => {
...
}
}
添加回答
举报
0/150
提交
取消