Firebase 在setData()之后刷新DocumentSnapshot,无需额外查询
为了在Firestore文档中设置新数据,我通常使用Firebase 在setData()之后刷新DocumentSnapshot,无需额外查询,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,为了在Firestore文档中设置新数据,我通常使用setData()和merge:true。这可以很好地工作,并且符合数据保存的预期: await userDoc.reference.setData({ 'favourite_color': 'blue', 'favourite_team': 'fcporto', },merge: true); 我唯一的问题是DocumentSnapshot(本例中的userDoc)在setData完成后不会自动“刷新”,这迫使我对文档进
setData()
和merge:true
。这可以很好地工作,并且符合数据保存的预期:
await userDoc.reference.setData({
'favourite_color': 'blue',
'favourite_team': 'fcporto',
},merge: true);
我唯一的问题是DocumentSnapshot(本例中的userDoc)在setData
完成后不会自动“刷新”,这迫使我对文档进行额外的查询
有没有办法在setData()之后自动更新DocumentSnapshot?(相同的行为发生在
updateData()
)否,DocumentSnapshot对象是不可变的-无法更改。您必须进行另一个查询,或者等待侦听器的另一个实时更新。我的代码中有许多地方有文档/文档的侦听器,我对它们执行完全独立的.set()等操作-侦听器负责更新文档的本地副本(无论是通过Redux还是简单地使用state挂钩)。保留文档快照并不是一个好主意-将它们复制到某种形式的本地状态