Java Firebase数据库,查找现有值
我有一个firebase数据库,其结构如下所示:Java Firebase数据库,查找现有值,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有一个firebase数据库,其结构如下所示: [unique key1] [key1] value1 : abc value2 : def [key2] value1 : xyz value2 : pqr 我知道唯一键unique key1,我需要知道该数据库中是否有value1中的值abc。我编写了如下所示的代码,但它总是返回零 FirebaseDatab
[unique key1]
[key1]
value1 : abc
value2 : def
[key2]
value1 : xyz
value2 : pqr
我知道唯一键unique key1
,我需要知道该数据库中是否有value1
中的值abc
。我编写了如下所示的代码,但它总是返回零
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) {
}
});
有人能指出我的代码有什么问题吗。
提前谢谢。你真的很接近了。在本例中,您需要的不是
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());
}
}
你真的很接近。在本例中,您需要的不是
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());
}
}
你在哪里分配abc的价值?你在哪里分配abc的价值?