【问题标题】:is StreamBulider will consider data as new reads for twice reads and change data or only for changing onesStreamBulider 是否会将数据视为两次读取和更改数据的新读取或仅用于更改数据
【发布时间】:2022-01-10 10:43:27
【问题描述】:

我知道 .get() 会将其集合中的任何数据视为新读取,但以下代码呢

StreamBuilder<QuerySnapshot>(        
  stream: FirebaseFirestore.instance.collection("users").doc(widget.userId)
                                    .collection("allEvents").snapshots(),

调用.snapshot() 获取数据,然后监听变化。现在它会将获取数据和更改数据视为读取还是仅将更改视为读取?

【问题讨论】:

    标签: firebase flutter google-cloud-firestore stream


    【解决方案1】:

    当你在实时变化中监听变化时,意味着你第一次附加监听器时,你得到了查询对应的所有文档。这意味着您必须支付与查询返回的文档数量相等的读取次数。之后,每次文档中的属性发生更改时,都会根据该更改通知您。这意味着您将只负责该特定操作,仅此而已。

    【讨论】:

    • 这是否意味着每次我打开监听时它都会读取所有数据作为新读取?例如,如果想收听收藏文档,那么我处理了收听,然后我在 10 秒后再次收听..它将再次将所有文档读取为新文档?
    • 不,只有超过 30 分钟才会再次向您收费。查看这篇文章,How to drastically reduce the number of reads when no documents are changed in Firestore?
    • 谢谢,但我问题中的前一个代码是 StreamBuilder.snapshots() Widge .. 它自己听吗?
    • 是的,但你也应该调用listen,正如彼得在article中解释的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多