passbuddy-2af92
Passwords
pass1
age: 20
name: "Shantanu"
pass2
age: 42
name: "Rinku"
pass3
age: 51
name: "Swarup"
这是我的firebase数据库。我想根据名称按排序顺序检索数据:ie
{pass3={name=Swarup, age=51}, pass1={name=Shantanu, age=20}, pass2={name=Rinku, age=42}}
或以相反的顺序
我已尝试过这些代码行来完成所需的任务,但它们似乎无法正常工作。
DatabaseReference databasePasswords = FirebaseDatabase.getInstance().getReference().child("Passwords");
databasePasswords.orderByChild("name").startAt("S").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(TAG, "onDataChange: DATA : " + dataSnapshot.getValue().toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Thanx提前帮助你...
答案 0 :(得分:0)
对Firebase数据库执行查询时,可能会有多个结果。当您使用ValueEventListener
时,所有匹配的节点将在一个DataSnapshot
中传递给您。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。您的代码需要处理此列表,以便维护匹配节点的顺序:
DatabaseReference databasePasswords = FirebaseDatabase.getInstance().getReference().child("Passwords");
databasePasswords.orderByChild("name").startAt("S").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
Log.i(TAG, "onDataChange: Key : " + childSnapshot.getKey()+, Name : "+childSnapshot.child("name").getValue());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // never ignore errors
}
});
答案 1 :(得分:0)
我正在研究分类,过滤和限制部分Firebase数据。这是一个很好的参考页面:
https://firebase.google.com/docs/firestore/query-data/order-limit-data