【问题标题】:Getting rank of user from firebase database in android从android中的firebase数据库获取用户排名
【发布时间】:2018-06-16 02:49:26
【问题描述】:

我有一个存储用户列表的实时 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 名等的列表?

【问题讨论】:

    标签: android json firebase firebase-realtime-database


    【解决方案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。

    【讨论】:

    • 谢谢@frank 但是有没有办法用firebase函数做到这一点?如果是这样,怎么做?示例代码将不胜感激 :) 因为必须加载所有用户非常耗费资源。
    • Cloud Functions 只是在其中运行代码的另一个环境。从 Cloud Functions 访问 Firebase 数据库的可能性与直接从 Android 应用程序访问它几乎相同。没有神奇的“从 Cloud Functions 数据库突然允许按索引访问”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多