我是使用firebase的新手,尝试为我的案例找到最佳解决方案。
我想实现一些高分系统,该系统将检查用户的分数是否在最高分中,例如在实际数据库中排名前10位。
我的数据库结构如下:
Score
-KdqwHzp2mFEPEEbTylu
nickname: "jackson"
result: 20
-KdqwYBJUGi-dsDak56n
nickname: "jackson"
result: 13
-Kdr--la-ZCcKkurE1Bl
nickname:"jackson"
result: 15
我的分数对象:
public class Score {
private String nickname;
private Integer result;
public Score(String nickname, Integer result) {
this.nickname = nickname;
this.result = result;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Integer getResult() {
return result;
}
public void setResult(Integer result) {
this.result = result;
}
}
任何人都可以给我一个如何实现这个并提供代码示例的建议吗?
答案 0 :(得分:0)
您使用查询:
DatabaseReference ref = FirebaseDatabase.getInstance().ref("Score");
Query query = ref.orderByChild("result").limitToLast(10);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot scoreSnapshot: dataSnapshot.getChildren()) {
Score score = scoreSnapshot.getValue(Score.class);
...
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
// ...
}
});
请注意,分数将按递增顺序排列。 Firebase数据库没有运算符来返回降序列表。因此,如果您想展示排行榜,您必须在客户端上撤消它们。