我有一个实时的firebase数据库,用于存储用户列表,并以下列格式存储(Json)
{
"users" : {
"-L29HeOZCmYu9UGJLMQR" : {
"name" : "John Doe",
"phoneNumber" : "+555-1566",
"points" : 21,
"rank" : 10,
"userId" : "-L29HeOZCmYu9UGJLMQR"
},
"-L2ASCuStoH7CTaqgBgG" : {
"name" : "Jenna Rose",
"phoneNumber" : "+555-3562",
"points" : 96,
"rank" : 0,
"userId" : "-L2ASCuStoH7CTaqgBgG"
},
....// A lot more users.
}
所以我的问题是,我如何根据"点"来获得用户的排名?变量?另外,我如何准备前10名或前100名等的名单。?
答案 0 :(得分:1)
在没有加载所有用户的情况下,无法获得特定用户的排名。
但您可以按using Firebase's query mechanism to sort and filter data获得前N名用户。例如:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
Query top10query = ref.orderByChild("points").limitToLast(10);
top10query.addChildEventListener(...
孩子们将按升序排列。您必须将它们还原到客户端,例如将每个后续子项添加到列表的 top 。