作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有一个这种格式的数据库:
我需要能够获得 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: null
最佳答案
你得到这个结果是因为你没有使用正确的查询。除此之外,您的数据库中没有名为 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
对所有 child 进行排序属性(property)和使用
.equalTo(barcode)
.
关于java - Firebase 获取值返回 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60850209/
我是一名优秀的程序员,十分优秀!