Firebase orderByChild和equalTo()查询不起作用

时间:2015-03-24 09:47:38

标签: android firebase

我正在使用以下Firebase数据库表开发Android应用:

"posts": {
"id_1": {
  "author": "google:111527135678918251124",
  "color": -2960686,
  "creationTime": 1427104145195,
  "text": "my text",
  "title": "my Title",
  "type": 0,
  "visible": true
},
"id_2": {
  "author": "google:111527135678918251524",
  "color": -2960686,
  "creationTime": 1427104145195,
  "text": "my text",
  "title": "my Title",
  "type": 2,
  "visible": true
 },
"id_3": {
  "author": "google:111527135678918251124",
  "color": -2960686,
  "creationTime": 1427104145195,
  "text": "my text",
  "title": "my Title",
  "type": 1,
  "visible": true
 }
}

我希望能够检索由孩子排序的帖子(按类型排序为例),并且能够检索具有特定子值(type = 1)的所有帖子。 阅读Firebase文档似乎我必须编写以下代码,但我没有得到想要的结果。

按类型排序

rootRef.child("posts").orderByChild("type")
            .addListenerForSingleValueEvent(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            result = (HashMap<String, Post>) dataSnapshot.getValue();
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

我得到:一张无序的帖子地图

Type = value

rootRef.child("posts").orderByChild("type").equalTo(1, "type").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            result = dataSnapshot.getValue();
            result = result;
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    })

我得到:null。 我的Datasnapshot对象有key = "posts"value = null

1 个答案:

答案 0 :(得分:4)

关于订购,我认为问题在于我将数据检索为HashMap,这本身就是无序的。

根据评论中的建议,第二个案例需要.equalTo(1)而不是.equalTo("type",1),因为它之前是.orderBy()方法。