Firebase orderByChild 和 equalTo() 查询不起作用
Firebase orderByChild and equalTo() queries don't work
我正在使用以下 Firebase 数据库 table 开发一个 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
}
}
我希望能够检索按子排序的帖子(例如按类型排序)并能够检索具有特定子值(类型 = 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) {
}
});
我得到:一个无序的帖子地图
类型 = 值
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
关于排序,我认为问题是我正在检索数据作为 HashMap
本身是无序的。
正如评论中所建议的,第二种情况需要 .equalTo(1)
而不是 .equalTo("type",1)
因为它前面有 .orderBy()
方法。
我正在使用以下 Firebase 数据库 table 开发一个 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
}
}
我希望能够检索按子排序的帖子(例如按类型排序)并能够检索具有特定子值(类型 = 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) {
}
});
我得到:一个无序的帖子地图
类型 = 值
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
关于排序,我认为问题是我正在检索数据作为 HashMap
本身是无序的。
正如评论中所建议的,第二种情况需要 .equalTo(1)
而不是 .equalTo("type",1)
因为它前面有 .orderBy()
方法。