This is firebase database details
我想在不使用父键的情况下使用子搜索详细信息。根据这个数据库,我想使用Name而不使用父键(“kjhsfkgkrlhg”)获得价格和类别,(“获取价格,类别名称=”超级Creamcracker“)
答案 0 :(得分:0)
首先,首先进行数据库引用
DatabaseReference itemRef = FirebaseDatabase.getInstance().getReference("Items");
然后,
String itemName = "super Creamcracker";
Query query = itemRef.orderByChild("Name").startAt(itemName).endAt(itemName+ "\uf8ff");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
//if you dont have class for item
String price = data.child("Price").getValue().toString();
String category = data.child("Category").getValue().toString();
//if you have class, lets say Item.java
Item item = data.getValue(Item.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:0)
要解决此问题,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference itemsRef = rootRef.child("Items");
Query query = itemsRef.orderByChild("Name").equalsTo("super Creamcracker");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String category = ds.child("Category").getValue(String.class);
long price = ds.child("Price").getValue(Long.class);
Log.d("TAG", category + " / " + price);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(valueEventListener);
因此ds
包含结果列表。即使只有一个结果,ds
也会包含一个结果的列表。所以输出将是:
200g / 200