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

路径不存在时Firebase childEventListener返回值

段成益
2023-03-14

阅读文档后发现,当路径不存在时,childEventListener似乎不会激发。

这是一个问题,因为我想向用户显示一条没有数据的消息。

我可以添加一个valueEventListener,就像这个答案一样,但我将查询限制为最新的值,即query.limitTolast()并且valueEventListener不限制ToLast而是获取路径中的所有数据。

posts
{
    $userid
    {
        $postid {
            post_content:content
            timestamp:1234567
        }
        $postid {
            post_content:content
            timestamp:1234567
        }
        $postid {
            post_content:content
            timestamp:1234567
        }
        $postid {
            post_content:content
            timestamp:1234567
        }
    }
}

共有1个答案

东郭臻
2023-03-14

如果要同时处理子级和不存在子级的情况,可以同时添加值和子级侦听器:

Query query = firebaseRef.child(users).child(userid).limitToLast(1);
query.addChildEventListener(new ChildEventListener() {
    void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
        ...
    }
    ...
});
query.addValueEventListener(new ValueEventListener() {
    void onDataChange(DataSnapshot snapshot) {
        if (!snapshot.exists()) {
            // TODO: handle the "no data available" scenario
        }
    });
});

Firebase客户端足够聪明,只加载一次数据,即使有多个侦听器,就像上面的情况一样。

如果需要,您还可以使用单个ValueEventListener来完成此操作,如下所示:

query.addValueEventListener(new ValueEventListener() {
    void onDataChange(DataSnapshot snapshot) {
        if (!snapshot.exists()) {
            // TODO: handle the "no data available" scenario
        }
        else {
            for (DataSnapshot childSnapshot: snapshot.getChildren()) {
                // TODO: handle the child snapshot
            }
        }
    });
});
 类似资料:
  • 当我尝试运行或调试时,android Studio 1.3.2显示为“本地路径不存在”,设备名称也没有apk文件,构建文件夹Gradle-2.4 Gradle plugin-1.3 注意:我从eclipse导入了这个项目 编辑:我解决了这个问题。。现在,新的一个是“无法在dexpath类中找到mainactivity” 但是第1类。dex和Class 2。生成dex

  • 问题内容: 我有2张桌子- : 第二张桌子- : 我只需要选择未取消的预订(在此示例中仅为ID 3)。我可以轻松地选择带有简单条件的已取消,但由于未在此处取消工作,因此我在努力避免未取消。 问题答案: 要么: 第一个版本更直观,但是我认为第二个版本通常可以获得更好的性能(假设您在联接中使用的列上有索引)。 第二个版本有效,因为返回第一个表中所有行的一行。当条件成功,这些行会包括从第二表中的列,就像

  • 问题内容: 尽管我看到了很多类似问题的答案,但我无法使以下代码正常工作: 我希望在C:\ User \ user_id下获得所有“ somefile.xml”的路径列表,以及该路径下的所有子目录。但是hasNext()方法每次都返回false。 问题答案: 仅迭代您提供的目录并匹配该目录中的条目。它 不在 任何子目录中查找。 您需要使用walkXXXX方法之一来查看所有目录。例如:

  • 当我每次运行我的应用程序时,versionName在清单文件中会递增。20389是旧版本名,20390是增量数。 项目的成功构建就像成功构建一样。但问题是为什么Android studio会缓存以前的apk版本。以下是错误: 目标设备:lge-nexus_5-061642fd00511249上载文件本地路径:h:\customfolder\app\build\outputs\apk\myappna

  • 我的英语不好:),对不起。 我正在使用studio构建Android Contacts apk,包括ContactsCommon(lib)和PhoneCommon()。 现在,当我运行应用程序时,本地路径并不存在。 Android SDK Tools 24.0.2(最新) Build.Gradle(项目) 类路径'com.android.tools.build:gradle:1.0.0' http

  • 在将Android Studio更新到0.2.4之后,我无法部署我的项目。apk文件名完全不匹配。 在阅读了这里的一些文章后,我将输出路径更改为build/apk文件夹,但问题仍然存在。他正在寻找projectname.apk,而不是创建的projectname-debug-unaligned.apk,我不知道如何以及在哪里可以告诉他更改他正在寻找的名称。有什么想法吗? PS:是的,我已经读了几篇