2 万人以上の学生向けの復習/試験アプリを作成したいと考えています。アプリのすべての生徒 (ユーザー アプリ) を対象に、毎日テストを受けます。そして、その記録 (スコア) を合計マークとしてクラウド Firestore に保存します。だから私の問題は、学生の順位をスコアで表示したいということです(合計点を並べ替えながら)。生徒がランキング ページにアクセスして上位の生徒を確認すると、アプリは合計点数の降順で並べられた 20,000 のドキュメントを呼び出します。
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,0000 X 20,000 = 400,0000,0000 == 1 日あたり 400m の読み取り、これは 1 日あたり $720、つまり 30 に相当します。 X $720=$21,600. その費用をかけずにこれらのドキュメントを読む別の方法はありますか?