firebase-查询内部对象

时间:2018-09-11 22:35:02

标签: android firebase-realtime-database

我在firebase中有以下数据:

"posts": {
  "ts-functions": {
    "metrics": {
      "views" : 100,
      "likes" : 251000,
      "shares": 1200,
    },
    "title" : "Why you should use TypeScript for writing Cloud Functions",
    "author": "Doug",
  },
  "android-arch-3": {
    "metrics": {
      "views" : 100,
      "likes" : 117000,
      "shares": 144,
    },
    "title" : "Using Android Architecture Components with Firebase Realtime Database (Part 3)",
    "author": "Doug",
  }
},

可以这样查询吗?

mDatabase.child("posts").child(ANYTHING).child("metrics").equalTo(100).addValueEventListener;

我只想获取指标对象。

2 个答案:

答案 0 :(得分:0)

首先,感谢您引用了我的两个博客。我了解您可能是从Firebase文档中删除的,但是。 :-)

不幸的是,实时数据库查询中没有通配符。您的查询必须从数据库中完全指定的位置开始。

您不能从子列表中提取特定子,而忽略所有其他相邻子。当您读取数据库中的位置时,必须读取该位置上的所有子级。

答案 1 :(得分:0)

在@Doug的答案中,我喜欢做的是将所有DatabaseReference的类保留为带参数的常量。

通过这种方式,我不必在很明显的Activity内创建引用。

private static DatabaseReference root = FirebaseDatabase.getInstance().getReference();

public static DatabaseReference post(String titleKey) {
       return root.child(titleKey);
}

public static DatabaseReference metrics(String titleKey) {
       return post(titleKey).child("metrics");
}