【问题标题】:Refresh DocumentSnapshot after setData() without additional query在 setData() 之后刷新 DocumentSnapshot,无需额外查询
【发布时间】:2020-08-04 14:55:39
【问题描述】:

为了在 Firestore 文档中设置新数据,我通常使用 setData()merge: true。这可以正常工作,并且符合数据保存的预期:

await userDoc.reference.setData({
    'favourite_color': 'blue',
    'favourite_team': 'fcporto',
  },merge: true);

我唯一的问题是 DocumentSnapshot(此示例中为 userDoc)在 setData 完成后不会自动“刷新”,这迫使我对文档进行额外的查询。

有什么方法可以在 setData() 之后自动更新 DocumentSnapshot 吗? (updateData() 也会发生同样的行为)

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    不,DocumentSnapshot 对象是不可变的 - 无法更改。您将不得不进行另一个查询,或等待来自侦听器的另一个实时更新。

    【讨论】:

      【解决方案2】:

      我的代码中有很多地方都有文档/文档的侦听器,并且我对它们执行完全独立的 .set() 等 - 侦听器关心更新我的本地文档副本(无论是通过 Redux 还是简单地 useState Hooks)。保留 DocumentSnapshot(s) 并不是一个好主意 - 将它们复制到某种形式的本地状态。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-09
        • 2011-07-07
        • 2020-08-08
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多