当前位置: 首页 > 知识库问答 >
问题:

如何从Firebase实时数据库中的统计数据创建排行榜?

葛和志
2023-03-14

我想在我的应用程序中创建一个排行榜。排行榜应显示得分最高的10位最佳用户。我的Firebase数据库如下所示:

Firebase Datenbank:

我已经创建了一个包含10个文本视图的活动。从第一个文本视图开始,我想将文本更改为:

“第一名|‘用户名’|‘高分’分数”

现在我的问题是:

对我来说,做这件事最简单的方法是什么?

那么,保护数据库的最佳方式是什么,以便只能使用应用程序更改数据?

共有1个答案

暴乐邦
2023-03-14

要获得得分最高的前10名用户,您可以使用这样的查询:

DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("Users");
Query top10Query = usersRef.orderByChild("highscore").limitToLast(10);

然后用如下方式读取匹配数据:

top10Query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            Log.i("Firebase", userSnapshot.getKey());
            Log.i("Firebase", userSnapshot.child("highscore").getValue());
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

以上内容将为您提供前10名的分数,但按升序排列,因为Firebase无法选择按降序返回结果。要以正确的顺序显示它们,您需要在代码中反转结果,或者以反序将它们添加到用户界面。

 类似资料:
  • 我正在创建一个应用程序,它使用两步对象创建到firebase实时数据库。 我想要的是,在一个捕获onCreate事件的云函数上,如果一些规则不完整,那么create操作就会被停止。 有办法做到这一点吗?或者我需要移除节点而不是拒绝创建? 谢谢你!

  • 我正在尝试读取我的Flutter应用程序中的firebase实时数据库中的数据,并将其分配给模型类,但是,我在控制台中得到了以下错误。 下面是我到目前为止所做的代码 员工类别 我不知道我做错了什么,请帮我解决这个问题

  • firebase数据库最近的更新似乎有一些变化。我的项目在firebase\u数据库:^7.0.0版本下运行良好,但在firebase数据库的更新版本中,我无法更新项目代码。 以下是v7的工作版本 firebase\u数据库^9.0.12上的同一代码出现错误。我收到的错误在`(DataSnapShot snap)async{…}上错误是 无法将参数类型“Future Function(DataSn

  • 在执行应用程序检查后,我的firebase实时数据库在我的unity应用程序中无法工作。在firebase应用程序检查功能之前,它完全可以正常工作。但现在,当我试图保存数据时,它拒绝了我的数据库请求,当我在app check monitor中监视我的实时数据库时,它显示我的请求没有包含app check令牌: 这可能是因为您正在使用旧的firebase SDK,其中应用程序检查位于应用程序内部 我

  • 我如何删除记录“苹果”(在图片中标记)? 根据文档,要移除一个项,需要对引用调用removeValue()。但要获得引用,我需要子ID。因为它是一个随机生成的id(-kisnx87ayigsh3ilp0d),如何删除它?

  • 我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(