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

子值=null

竺鸿骞
2023-03-14
database
   |
  places
     |
     user1
     |  |___indoors: "yes"
     |  |___outdoors: "yes"
     |
     user2
        |___indoors: "yes"   
        |___outdoors: "no"
ValueEventListener placesListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String locations = dataSnapshot.toString(); // I get the entire tree as String
    }
}

//this is how I set the listener to changes
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
DatabaseReference reference = database.child("places");
reference.addValueEventListener(placesListener);

但是,当我只想要indoors子项时,我会得到datasnapshot{key=indoors,value=null}

这就是我如何尝试只获得indoors键和值(几乎相同,只是添加了额外的.child(“indoors”):

ValueEventListener placesListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String indoors = dataSnapshot.child("indoors").toString(); // I get value = null
    }
}

// listener remains the same

共有1个答案

阮炯
2023-03-14

datasnapshot中包含的数据是相对的,就像JSON树一样。来自datasnapshot#child()的文档:

获取指定相对路径上位置的DataSnapshot。相对路径可以是简单的子键(例如'fred'),也可以是更深的斜杠分隔路径(例如'fred/name/first')。如果子位置没有数据,则返回空的DataSnapshot。

在您的示例中,在places节点的正下方没有名为indoors的子节点。相反,您有两个名为user1user2的子级,这两个子级分别有一个名为indoors的子级。因此,为了访问indoors子项之一,您需要执行以下操作:

dataSnapshot.child("user1").child("indoors").toString();
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
    Log.d(childSnapshot.getKey() + ": indoors=" + childSnapshot.child("indoors").toString());
}
 类似资料:
  • 假设我有一个对象Person,其字段类型为FirstName和LastName。现在我也有一个并且我喜欢使用流。 现在我要生成一个,以便将具有相同名字的人分组。我如何在不编写大量代码的情况下进行这一操作?到目前为止我的方法是 但似乎这是分配地图值的错误方法。我该换什么?或者我是否应该使用.reduce和作为初始值,然后通过将元素放入内部来聚合它?

  • 我正在用java创建一个掷骰子的应用程序。我有一个掷骰子的“骰子”类,和一个使用“骰子”的多个实例变量的“骰子”类。但是,它只为我的值返回0。骰子类本身可以工作,并且会掷出一个随机数,但是我不知道如何在我的“骰子”类中得到多个掷骰子。感谢任何帮助。 骰子类 模具等级

  • 问题内容: 我有一个这样的表“ bla”: 如果我做SQL查询 我只得到ID为2的记录。我没有ID为3的记录,其中fk为空。我以为NULL!=4。看来这是错误的。 为什么会这样呢? 问题答案: 不等于任何东西。您需要明确接受null: 有关处理的更多信息,请参见使用NULL。

  • 问题内容: 当我获得不同的记录计数时,出现了这个问题,我认为这是相同的查询,一个使用 约束,另一个使用a 。约束中的表具有一个空值(错误数据),该空值导致该查询返回计数为0的记录。我有点理解为什么,但是我可以使用一些帮助来完全理解这个概念。 简单地说,为什么查询A返回结果而B不返回结果? 这是在SQL Server 2005上。我还发现调用导致B返回结果。 问题答案: 查询A与以下内容相同: 既然

  • 问题内容: 我的数据库具有按以下方式排序的值: 我想实现一个朋友添加系统,您可以在其中搜索用户名或电子邮件,并允许您添加此人。 我可以通过使用找到用户 这样我就可以得到用户的整个字典,但是在获取UID时遇到了问题。 snapshot.key给了我“用户”。 使用用户名/电子邮件找到用户的字典后,如何从字典中获取UID值? 问题答案: 对Firebase数据库执行查询时,可能会有多个结果。因此,快照

  • 我想按姓名、姓氏或电子邮件搜索用户,但由于我没有上述级别的用户密钥,我不知道如何实现这一点。我正在执行和管理员会话,因此它无法访问用户密钥。 我尝试过: 但它会把所有用户都带到数据库上。有什么想法吗?