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

Firebase实时数据库:如何在使用AddChildEventListener时获取ChildrenCount?

雷浩思
2023-03-14

我是说

thisRoom.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        int numberOfPlayers = (int) dataSnapshot.getChildrenCount();

现在我可以得到这个房间的孩子了,但是我想知道是否有一种方法可以使用AddChildEventListener来完成同样的事情。

共有1个答案

孟鹏海
2023-03-14

ChildEventListener中的方法在单个子节点上触发,并且不携带整个结果的知识。在ChildEventListener中获得子节点计数的唯一方法是保留您自己的计数器,在OnChildAdded中递增它,在OnChildRemoved中递减它。这给了您一个运行计数器:一个反映您的客户机代码已经处理了多少子级的数字。

若要获得子级数目的绝对计数,请使用ValueEventListener。请注意,将ChildEventListenerValueEventListener附加到同一位置/查询只会传输一次数据。因此,将两种类型的侦听器都附加在一起并没有什么问题,每个用例都附加一个侦听器。

另请参阅:

    null
 类似资料:
  • 我从一个开发人员那里得到了一个基于Firabase Realtime DB的Ionic应用程序的代码。当尝试启动应用程序时,im会收到此错误消息。 [ng]src/app/data-service.service.ts(14,36)中出现错误:错误TS2339:类型“{apikey:String;authDomain:String;databaseUrl:String;ProjectId:Stri

  • 在我的情况下,登录应用程序时需要通过UID从realTime Database获取用户配置文件 在文档中必须使用添加值事件通知程序才能从实时数据库读取 //如果我有obj的id,如何直接从实时firebase获取值 //我的问题是,这里不能使用这种方法

  • 我有一个带有此模式的数据库: 我测试了这段代码,但我无法从数据库中获得任何消息。我会感谢你的帮助。

  • 我正在一个聊天应用程序,其中消息存储在firebase实时数据库。现在,如果我创建一个如下所示的节点(Chats-Better-A-ID和-B-ID是自动生成的聊天室密钥),那么我想知道当用户S在聊天应用程序中打开与用户T聊天时,so数据库将只读取存储在Chats-Better-S-T-ID中的消息,而不会读取其他聊天室消息!?我说的对吗?如果是,那么它会降低定价吗? 或 如果我存储如下所示的数据

  • 我无法在/users/{uname}/token上获取令牌- 错误:提供给sendToDevice()的注册令牌必须是非空字符串或非空数组。在FirebaseMessagingeror。FirebaseError[作为构造函数](/srv/node_modules/firebase admin/lib/utils/error.js:42:28)位于FirebaseMessagingError。在新

  • 我正在使用Flutter,我想从我的实时数据库Firebase中检索一些数据。我的实时数据库Firebase中存储了以下数据: 如何从中获取每一条信息?例如,我只想得到“Tom”这个名字?