[英]Firebase getting value returns NULL value
在数据库中搜索条码后,我需要能够获得name
、 price
和quantity
。
我试过这样的事情:
mFirebaseInstance = FirebaseDatabase.getInstance();
mFirebaseDatabase = mFirebaseInstance.getReference("ProductData");
UserId = mFirebaseDatabase.push().getKey();
public void searchProduct(String barcode){
mFirebaseDatabase.child("Products").child("barcode").equalTo(barcode).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.d("DBVAL", String.valueOf(dataSnapshot.getValue()));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
这是输出:
D/DBVAL:空
你得到这个结果是因为你没有使用正确的查询。 除此之外,您的数据库中没有名为DataUsers
节点。 要获取包含特定条形码的所有子项,请使用以下查询:
Query barcodeQuery = mFirebaseDatabase.child("ProductData").child("Products")
.orderByChild("barcode").equalTo(barcode);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("name").getValue(String.class);
int price = ds.child("price").getValue(Integer.class);
int quantity = ds.child("quantity").getValue(Integer.class);
Log.d("TAG", name + "/" + price + "/" + quantity);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
barcodeQuery.addValueEventListener(valueEventListener);
看,我在此查询中添加了节点ProductData
和Products
,然后我按barcode
属性对所有子项进行排序并使用.equalTo(barcode)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.