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

查询Firebase DatabaseReference的习惯用法是什么?

东方海
2023-03-14

不是Android系统的问题。

private void db() throws FileNotFoundException, IOException {
    FileInputStream serviceAccount = new FileInputStream("serviceAccountKey.json");
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
            .setDatabaseUrl(stringURL)
            .build();

    log.info(options.toString());

    FirebaseApp firebaseApp = FirebaseApp.initializeApp(options);
    FirebaseDatabase f = FirebaseDatabase.getInstance(firebaseApp, stringURL);

    DatabaseReference databaseNonRoot = f.getReference();
    DatabaseReference databaseReference = databaseNonRoot.getRoot();

    log.info(databaseReference.toString());

    //    databaseReference.addValueEventListener(new ValueEventListener(){
    //really?
}
{
  "abc" : 123,
  "bar" : 4342342,
  "foo" : 432434
}

另见:

如何从Firebase android中获取所有子列表

共有1个答案

施同
2023-03-14

是的。真的。

databaseReference.addValueEventListener(new ValueEventListener(){
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
      System.out.println("Key="+childSnapshot.getKey()+" Value="+childSnapshot.getValue());
    }
  }

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

有关更多信息,请参见关于处理列表的Firebase文档。我还建议在这里阅读我的答案:https://stackoverflow.com/a/30943084/209103

 类似资料:
  • 问题内容: 我有一个带有一些静态成员的类,并且我想运行一些代码来初始化它们(假设此代码无法转换成简单的表达式)。在Java中,我只会 除非我弄错了,否则C ++不允许使用此类静态代码块,对吗?我应该怎么做呢? 我想要以下两个选项的解决方案: 初始化在进程加载时发生(或在加载带有此类的DLL时)。 初始化发生在第一次实例化该类时。 对于第二种选择,我在想: 但这是不可能的,因为C ++(目前?)不允

  • Java8正式将引入到JDK类库中,用于lambda的Stream API,因为lambda表达式不能声明其-子句,并且lambda body不能抛出检查过的异常,如。 和流API的习惯用法/最佳实践是什么?明确抛出新的对象的条件是什么?何时捕获异常?

  • 我正面临着一个挑战,而工作类型映射的查询构建通过DoctrineSQL查询生成器(从DBAL,而不是ORM)使用MySQL 8。 执行的查询从数据库返回以下三列: 用户id(表中的bigint列) 起始时间(表中的日期时间列) 结束时间(表中的datetime列) 但是,通过我当前的实现(例如简化),没有值映射到它们的PHP对应项。 fetchAll()方法返回的结果返回一个

  • 问题内容: 我涉足clojure,尝试确定与该通用python习语等效的clojure(和/或Lisp)有点麻烦。 习惯用法是,在python模块的底部经常有一些测试代码,然后是运行该代码的语句,例如: 这对于简单的临时测试很有用。通常,通过编写可以使用此模块,在这种情况下,从不调用它,但是在代码段的最后,也可以通过直接从命令行键入内容来运行该模块。 Clojure(和/或普通Lisp)中是否有一

  • 问题内容: 方法链接 是对象方法返回对象本身以使结果被另一个方法调用的实践。像这样: 这似乎被认为是一种好习惯,因为它会产生可读的代码或“流畅的界面”。但是,对我而言,它似乎打破了面向对象本身所隐含的对象调用表示法-生成的代码不代表对先前方法的结果执行的动作,通常这是面向对象的代码的工作方式: 这种差异设法为“调用结果对象”的点标记创建了两种不同的含义:在链接的上下文中,以上示例将被视为保存参与者

  • 问题内容: 我经常看到有关不鼓励使用的其他问题的评论。为什么这样不好?有时我只是不在乎错误是什么,我只想继续编写代码。 为什么使用积木不好?是什么让它不好?是我pass出错还是我except出错了? 问题答案: 正如你正确猜到的那样,它有两个方面:通过在后面不指定任何异常类型来捕获任何错误,并在不采取任何操作的情况下简单地传递它。 我的解释要“长一点”,因此; 可以细分为: 不要发现任何错误。始终