【问题标题】:Does the frequency of reading the same data count as new readings in Firstore?读取相同数据的频率是否计入 Firestore 中的新读数?
【发布时间】:2022-01-05 20:37:59
【问题描述】:

假设我们有ListView.bulider,它从Firstore 获取数据。

 Widget build(BuildContext context) {
    return FutureBuilder(
      future: FirebaseFirestore.instance.collection('users').get(),

    builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {


    if (!snapshot.hasData) {
    return const Expanded(child: SizedBox()) ;
    }
      return ListView.builder(
      
    itemCount: snapshot.data!.docs.length ,
    itemBuilder: (context, int index) {
    DocumentSnapshot documentSnapshot = snapshot.data!.docs[index];
   
    return ListView.builder(
    itemCount: snapshot.data!.docs.length ,
    itemBuilder: (context, int index) {
    DocumentSnapshot documentSnapshot = snapshot.data!.docs[index];
    return Text(documentSnapshot['products'])
    }
    );
    
  }
}

好的。我刚刚阅读了这些产品数据.. 然后我再次打开Future.Bulder 位于stfl 类中的同一页面,这算作新阅读吗?即使数据没有改变

也就是说,既然stfl class会再次获取数据,那么用户每次打开同一个页面多次都会计算一个新的读数吗? 和StreamBuilder一样吗? 我是否应该通过软件干预来避免这种情况,以便我以某种方式获取一次数据,例如在应用午餐开始时获取一次数据,而不是让它们进入用户多次浏览它的普通类?

【问题讨论】:

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


    【解决方案1】:

    然后我再次打开 Future.Bulder 所在的同一页面进入 stfl 类,这会算作新阅读吗?即使数据没有改变。

    是的,它将被视为一次新阅读。我已经写了一篇关于这个主题的文章,可以帮助您了解计费机制:

    也就是说,既然stfl类会再次取数据,那么每次用户多次打开同一个页面,会不会计算一个新的读数?

    是的,这是因为每次执行新请求时,Firestore SDK 都需要根据缓存的文档检查文档的在线版本。

    所以我以某种方式获取数据一次,例如在应用午餐开始时获取一次数据,而不是让它们进入用户多次浏览它的通用类?

    是的,您只能获取一次,然后将其传递到应用程序的其他需要的部分。我还建议您查看一些用于降低 Firestore 成本的技术:

    或者:

    甚至:

    【讨论】:

    • 非常有用的答案,非常感谢 Alex Mamo 提供这些直接而灵活的答案!!
    • 不客气,杰克。
    • 当然会去做,我刚刚阅读了你所有的文章并从中受益,你在谈论 .get() 。但它也与 StreamBuidler.snapshot 相同? ,
    • get() 准确读取数据,而快照侦听器正在侦听实时更新。由您决定哪个更适合您的用例。
    猜你喜欢
    • 2019-10-30
    • 2021-09-25
    • 2020-11-05
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多