Firebase retrieve highest 100 score

Multi tool use
Multi tool use


Firebase retrieve highest 100 score



This is a screen shot of my firebase:
enter image description here
I am trying to retrieve the highest 100 score in firebase database
I am using this code to add new node to firebase:


Map<String, String> post1 = new HashMap<String, String>();
post1.put("name",name);
post1.put("score",score);
myRef.push().setValue(post1);



And this is the code I am using to retrieve the highest 100 score which doesn't work (the code works but it is not retrieving the highest 100 score)


Query queryRef = myRef.orderByChild("score").limitToFirst(100);
queryRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
Score score=postSnapshot.getValue(Score.class);
Log.d("test"," values is " + score.getName() + " " + score.getScore());
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});





It's better to store scores as number instead of strings. Check out the comments on frank's answer for more info.
– André Kool
Sep 15 '16 at 11:37




1 Answer
1



Firebase queries are always in ascending order. So you'll need to get the last 100, instead of the first 100.


Query queryRef = myRef.orderByChild("score").limitToLast(100);



Then client-side you'll need to reverse the items.



Alternatively you can add a inverted property to your items invertedScore: -99. If you do that, you can order by that inverted score and won't have to reverse the array.


invertedScore: -99



This scenario has been covered frequently before. I highly recommend you study some of these:





I'm wondering if this will actually work because in the question the scores are strings and not numbers. Won't it sort something like this: "1", "12", "2", "3", "33", "333", "4"?
– André Kool
Sep 14 '16 at 14:29





Darn.... good catch André. Apparently I have a blind spot, because I swear I checked whether they were stored as number. The above will indeed only work if you store the scores as number (or as zero-padded strings).
– Frank van Puffelen
Sep 14 '16 at 15:00






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

sZkNPa9FGYRouvLU,M4EmW3PNQAbKBBYK5qQFe2MY4Aq0JZt4za
xv5qnlInrM4sqqRaBATwEn5ckKkn,fTC2t NHa,l8OshZ,J3DGNu7OP3FsjWfHIpj3 qjOIxgRt

Popular posts from this blog

PHP contact form sending but not receiving emails

Do graphics cards have individual ID by which single devices can be distinguished?

Create weekly swift ios local notifications