【问题标题】:Firestore How to access a value from a snapshot in a Document Snapshot streamFirestore 如何从文档快照流中的快照访问值
【发布时间】:2020-09-26 02:10:20
【问题描述】:

我是 dart/flutter 的新手,现在正在构建一个应用程序,用于跟踪 firstore 数据库中每个用户的一些数据。我有一个“用户”集合,其中包含每个用户的文档,用户文档中的一个字段是通过 firebase_auth 接收的“UID”。

话虽如此,为了确保我可以访问用户文档的最新副本,我持有一个 Stream。我想以某种方式从流中的最新快照访问“UID”字段,然后对其进行一些其他操作。

有没有办法做到这一点?我是否错误地使用/理解了流?

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore dart-stream


    【解决方案1】:

    如果您只需要 UID 来构建其他小部件,您可以简单地使用 StreamBuilder,只要从流中发出新值(您会得到一个副本),它将重建其子级。但是,如果您需要在某个任意时间点访问最新的 UID,请查看 RxDart 的 BehaviorSubject,它提供对最新发出的值(如果存在)的恒定时间同步访问。这对于处理一般状态非常有帮助。

    【讨论】:

    • 这能让我听到子集合中的变化吗?现在,我的每个用户文档都有一个子集合“Friends”,其中该子集合包含仅包含朋友 UID 的文档。我想获取最新的好友 UID 列表
    • 是的,BehaviorSubject 可以使用其addStream 函数作为流的包装器,同时也可以作为流本身。它只是提供了一个 value 字段,它是最后一个发出的值的缓存版本,您可以使用它在任何时间点获取最后一个发出的值。请注意,如果您希望将 2+ 个流组合成一个包含每个流中最新元素的单个流,请查看 RxDart 的 combineLatest 方法。
    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 2021-09-27
    • 2021-04-02
    • 2022-01-25
    • 2021-06-17
    • 2020-10-12
    相关资源
    最近更新 更多