(Android)Firebase数据库中是否有一种简单的方法来获取按孩子排名的节点位置?

时间:2018-07-19 06:20:02

标签: android firebase firebase-realtime-database

假设我的Android应用中有一个Firebase数据库,其结构如下:

{"firebase_db" : { 
"users" : {
  "user_uid_0" : {
    "name" : "name_0",
    "score" : 2000
  },
  "user_uid_1" : {
    "name" : "name_1",
    "score" : 3000
  },
  "user_uid_2" : {
    "name" : "name_2",
    "score" : 1000
  },
  "user_uid_3" : {
    "name" : "name_3",
    "score" : 4000
  },
  "user_uid_4" : {
    "name" : "name_4",
    "score" : 0
  }
}
}
}

,我想按孩子的“得分”对它们进行排序。但是,我不希望将整个列表作为返回值(可以使用orderByChild()和limitToLast()方法轻松实现)。相反,我想知道当子“得分”以降序排列时,特定节点在什么位置。例如,如果我输入“ user_uid_0”,则它应返回3(第3位);如果输入为“ user_uid_2”,则应返回4(第4位)

但是,我找不到几行代码来实现这一目标的方法。到目前为止,我想出的有效解决此问题的唯一方法是在Firebase上编写云功能...有没有更简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

是的,您可以在用户端解决此问题。我能想到的最简单的方法是根据您的需求查询数据库以获取所有用户对象。将所有这些对象添加到map,其中地图的keyuser id,而valueposition。最后,只需遍历地图并根据您的用户ID获取位置即可。就是这样!