Java 在Firebase中使用equalTo(“值”、“键”)吗?
以下是以下数据结构:Java 在Firebase中使用equalTo(“值”、“键”)吗?,java,firebase,firebase-realtime-database,Java,Firebase,Firebase Realtime Database,以下是以下数据结构: { "list" : { "-K4YlfoWHZqPyWONv68Y" : { ".priority" : -1.449077948445E12, "date" : 1449077948445, "id" : "0", "name" : "Name_0" }, "-K4YlfoWHZqPyWONv68Z" : { ".priority" : -1.449077948445E12,
{
"list" : {
"-K4YlfoWHZqPyWONv68Y" : {
".priority" : -1.449077948445E12,
"date" : 1449077948445,
"id" : "0",
"name" : "Name_0"
},
"-K4YlfoWHZqPyWONv68Z" : {
".priority" : -1.449077948445E12,
"date" : 1449077948445,
"id" : "1",
"name" : "Name_1"
},
"-K4YlfoWHZqPyWONv68_" : {
".priority" : -1.449077948445E12,
"date" : 1449077948445,
"id" : "0",
"name" : "Name_2"
},
"-K4YlfoWHZqPyWONv68a" : {
".priority" : -1.449077948445E12,
"date" : 1449077948445,
"id" : "1",
"name" : "Name_3"
},
...
}
我只需要获取id为“0”的项
以下工作正在进行中:
final Firebase ref = new Firebase("https://millezim-test.firebaseio.com/").child("list");
ref.orderByChild("id").equalTo("1").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot d : dataSnapshot.getChildren()) {
Model m = d.getValue(Model.class);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
但不是这个,为什么
ref.equalTo("1","id").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot d : dataSnapshot.getChildren()) {
Model m = d.getValue(Model.class);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
我是否误解了equalTo(“value”、“key”)是在不按某些内容重新排序的情况下使用的?中提到了(可选)key
参数:
在具有先前指定优先级的子项中,要开始的子项。仅当按优先级排序时才允许使用此参数
由于您没有按优先级排序,因此需要在Android部分中通过显式调用
orderByChild()
指定子级,因此没有这样的细节可以确保理解,“key”是“列表的项key”的起点,仅考虑基于优先级的请求?我在解析该子句时也遇到了麻烦。但是我总是使用orderByChild()
,所以从来没有遇到过这个问题。