我有一个结构的firebase数据库,如下所示:
[unique key1]
[key1]
value1 : abc
value2 : def
[key2]
value1 : xyz
value2 : pqr
我知道唯一键unique key1
,我需要知道此数据库中abc
中是否有值value1
。我已经编写了如下所示的代码,但它总是返回零。
FirebaseDatabase.getInstance().getReference().child(unique key1).orderByChild("value1").equalTo("abc").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getChildrenCount() == 0) {
Toast.makeText(context, abc, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Not found", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
任何人都可以指出我的代码有什么问题。 提前谢谢。
答案 0 :(得分:2)
你真的很亲密。在这种情况下,您需要orderByChild
而不是orderByValue
,因为您实际上正在寻找具有特定值的孩子。所以:
FirebaseDatabase.getInstance().getReference()
.child(unique key1).orderByValue().equalTo("abc")
.addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot item: snapshot.getChildren()) {
System.out.println("Found matching value in "+item.getKey());
}
}