Firebase获得最高的100分

has*_*s19 2 android firebase firebase-realtime-database

这是我的firebase的屏幕截图: 在此输入图像描述 我试图在firebase数据库中检索最高的100分我使用此代码将新节点添加到firebase:

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

这是我用来检索最高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) {

            }
        }); 
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 8

Firebase查询始终按升序排列.所以你需要得到最后的 100,而不是前100.

Query queryRef = myRef.orderByChild("score").limitToLast(100);
Run Code Online (Sandbox Code Playgroud)

然后客户端你需要反转项目.

或者,您可以为项目添加倒置属性invertedScore: -99.如果你这样做,你可以按倒数排序,而不必反转数组.

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