gpt4 book ai didi

android - Firebase 数据库检查它是否为空值,不适用于 DataSnapshot

转载 作者:行者123 更新时间:2023-12-04 10:14:54 25 4
gpt4 key购买 nike

所以我有一个数据库,我可以通过条形码搜索产品。
enter image description here

我想检查一下产品是否在我的数据库中

mFirebaseInstance = FirebaseDatabase.getInstance();
mFirebaseDatabase = mFirebaseInstance.getReference("ProductData");
productId = mFirebaseDatabase.push().getKey();

public void searchProduct(String barcode){

Query barcodeQuery = mFirebaseDatabase.child("Products")
.orderByChild("barcode").equalTo(barcode);

ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull 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("DATABASE", name + "/" + price + "/" + quantity); /// The output that I get is this: Neopraxam/25/1 and Vazelina/250/1

这就是我通过条形码搜索产品的方式。
searchProduct("123123123");

searchProduct("3232");

我尝试添加这些方法来检查我尝试获取的值是否为空:
if (ds.exists()){}  OR
if (ds.getChildrenCount() != 0){}

但我已经看到,如果该值不存在,它甚至不会进入循环。所以我假设它来自查询。
那么,我如何检查查询是否返回空值,因为我使用了 .equalTo(barcode) 方法,所以我想它应该返回 true 或 false 值

最佳答案

问题似乎与 onDataChange 有关签名,因为它包含 NonNull注解。执行 onDataChange body 偶为DataSnapshot null 值,更新签名如下

   ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
.
.
.

}

注:您应该使用 SingleValueEventListener而不是 ValueEventListener

关于android - Firebase 数据库检查它是否为空值,不适用于 DataSnapshot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61111079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com