Firebase获得最高的100分

时间:2016-09-14 11:33:57

标签: android firebase firebase-realtime-database

这是我的火力棒的屏幕截图: enter image description here 我试图在firebase数据库中检索最高的100分 我正在使用此代码向firebase添加新节点:

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

这是我用来检索最高100分不起作用的代码(代码可以工作,但它没有检索到最高的100分)

 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) {

            }
        }); 

2 个答案:

答案 0 :(得分:8)

Firebase查询始终按升序排列。因此,您需要获得最后 100,而不是前100个。

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

然后客户端你需要撤销这些项目。

或者,您可以为商品invertedScore: -99添加倒置属性。如果你这样做,你可以通过倒排的分数订购,并且不必反转阵列。

以前经常涉及此方案。我强烈建议你研究其中的一些:

答案 1 :(得分:0)

这是一种从 firebas 获取最高薪水的方法
或从 firebase 获取最高数字

one   citiesRef.orderBy("name").limit(3);
two   citiesRef.orderBy("name", "desc").limit(3);
three citiesRef.where("population", ">", 100000).orderBy("population").limit(2);
four  citiesRef.where("population", ">", 100000).orderBy("population");