如何减少每天的颤振云火石读取?

问题描述

我想为 2 万多名学生创建一个复习/考试应用程序。我将每天为我的应用程序的所有学生(用户应用程序)进行测试。然后将他们的记录(分数)作为总分存储在云 Firestore 上。 所以我的问题是我想按学生的分数显示他们的排名顺序(同时对他们的总分进行排序)。 因此,如果学生进入排名页面查看排名靠前的学生,该应用将调用 20k 个文档,按他们的总分降序排列,

     body: StreamBuilder(
          stream: FirebaseFirestore.instance
              .collection('Users')
              .doc('Students')
              .collection('Regions')
              .doc('regionName')
              .collection('districts')
              .doc('districtName')
              .collection('Student_Phone')
              .orderBy('Total_Marks',descending: true)
               //time registered students
              .orderBy('Created',descending: false)  the right one
             
              .snapshots(),builder: (BuildContext context,snapshot) {

           return ListView.builder(
                    itemCount: snapshot.data.docs.length,itemBuilder: (context,index) {
                    
                      return showUsers(
                        index: index,snapshot: stuSnapShot.data.docs[index],);
                    });
       .......}

以及我必须向学生展示“我的分数页面”以向他展示他的排名,这也将要检索 20k 文档以通过使用进行迭代这个。

    class showUsers extends StatefulWidget {
       var snapshot;
      final int index;
      showUsers({@required this.snapshot,@required this.index});
       @override
      _showUseRSState createState() => _showUseRSState();
     }

   class _showUseRSState extends State<showUsers> {
    @override
    Widget build(BuildContext context) {

    var numNum = widget.snapshot.data()['PhoneNumber'].toString();
      if (numNum == '+8977106429') {
 
          return Container(
             child: Text(
              'you are :${widget.index}  phone =$numNum',style: TextStyle(
                color: Colors.red,fontSize: 16,fontWeight: FontWeight.bold),),);
            } 
           }
          }

。当 20,000 X 20,000 = 400,0000,0000 == 400m 每天读取,这将花费 = 每天 720 美元,等于 30 X 720 美元 = 21,600 美元。 那么有没有另一种方式来阅读这些文件而不需要花费这个费用?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)