【问题标题】:what is the idiom to query a Firebase DatabaseReference?查询 Firebase DatabaseReference 的成语是什么?
【发布时间】:2017-12-06 03:19:56
【问题描述】:

不是安卓问题。

查询数据库的方法:

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?
}

我已经通过网络界面输入了数据manually。如何查询 Firebase?我正在寻找类似于SELECT * FROM <TABLE> 的东西。

JSON 数据导出:

{
  "abc" : 123,
  "bar" : 4342342,
  "foo" : 432434
}

另见:

how to get all child list from Firebase android

【问题讨论】:

标签: java firebase firebase-realtime-database


【解决方案1】:

是的。真的。

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 documentation on dealing with lists 了解更多信息。我还建议在这里阅读我的答案:https://stackoverflow.com/a/30943084/209103

【讨论】:

  • 这只是监听变化还是查询整个实际的 JSON 树?
  • onDataChange 触发初始数据和任何后续更改。
猜你喜欢
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2014-10-01
  • 2013-10-23
  • 1970-01-01
相关资源
最近更新 更多