为什么要花很多时间从扑朔迷离的Firestore中检索数据?

时间:2019-11-19 13:23:35

标签: flutter dart google-cloud-firestore

首先,我添加了一个动画,动画完成后,我在代码行下面调用了它,但是这花费了太多时间。

getData()async{
 DateTime now = DateTime.now();
       await Firestore.instance.collection('Table_Name').getDocuments().then((QuerySnapshot snapshot){

        print("length ${snapshot.documents.length}");
        for(int i = 0 ; i< snapshot.documents.length; i++){

          bool isToday = snapshot.documents[i].data['CreatedBy'].toString().split(" ")[0]==DateFormat("yyyy-MM-dd").format(now);
          print("isTOday $isToday");
          if(isToday && snapshot.documents[i].data['GainStatus']== "0"){
            setState(() {
            giftDocumentID = snapshot.documents[i].documentID; 
            });
            break;
          }
        }
        winOrLose(now);
        print("giftDocumentID: $giftDocumentID");
      });
}

此上述代码大约需要10分钟才能从Firestore中检索数据,为什么它太懒了?

2 个答案:

答案 0 :(得分:0)

通过在另一台设备上进行测试并顺利运行而无需花费大量时间来解决该问题。 实际上,我的第一台设备的内存已满,所以这就是为什么要花费太多时间。

但是我仍然感到困惑,设备的内存空间和Firestorm数据库之间的关系是什么!!

答案 1 :(得分:0)

firestore数据和设备内存之间的关系是缓存。首次加载数据时,数据是从firebase的服务器加载的(因此会增加您读取请求的费用),然后firestore将数据保存在缓存中以备将来使用。因此,缓慢的数据检索必定是设备操作系统问题(或电源问题)。

您可以从Firebase数据中删除缓存功能,但我不建议这样做。

同样如前所述,您不应一次加载所有数据,特别是如果要大量提取数据或经常更改数据时。解决该问题的方法是分页。

此视频很好地解释了Flutter分页: https://www.youtube.com/watch?v=coR4Y-DkrLc