我想为 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 美元。 那么有没有另一种方式来阅读这些文件而不需要花费这个费用?