You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Android Studio查询条码ID返回null问题求助

解决Firebase查询条码ID返回null的问题

我帮你排查了代码和可能的问题点,核心问题大概率是查询的节点路径不对,下面是具体的分析和解决方案:

问题根源

你在代码中先定位到了Bedah Mulut子节点:

bedahMulut = tindakan.child("Bedah Mulut");

但后续执行查询时,却是从tindakan根节点开始查找ID字段:

Query searchByID = tindakan.orderByChild("ID").equalTo(idBarcode);

如果你的Firebase数据结构是tindakan/Bedah Mulut下才包含带ID字段的目标节点,那这个查询路径就完全错了——根节点tindakan本身并没有直接的ID子字段,自然返回null。

修正后的代码

把查询的引用替换为bedahMulut,让查询在正确的节点下执行:

tindakan = FirebaseDatabase.getInstance().getReference("tindakan");
bedahMulut = tindakan.child("Bedah Mulut");
// 这里修改为bedahMulut而非tindakan
Query searchByID = bedahMulut.orderByChild("ID").equalTo(idBarcode);

searchByID.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) { // 先判断是否有数据,避免空遍历
            for (DataSnapshot idSnapshot : dataSnapshot.getChildren()) {
                String foundID = idSnapshot.child("ID").getValue(String.class);
                Log.v("hasil", "Found! -> " + foundID);
            }
        } else {
            Log.v("hasil", "No matching ID found");
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.v("hasil", databaseError.toException().toString());
    }
});

额外需要检查的点

如果修正路径后还是返回null,建议排查这几个地方:

  • 字段大小写匹配:Firebase的节点/字段名是大小写敏感的,确保代码中的ID和Firebase后台存储的字段名完全一致(比如不要后台存的是id,代码里写ID)
  • 数据类型一致:确认idBarcode的类型和Firebase中ID字段的类型相同(比如都是字符串,不要一个是数字类型一个是字符串类型)
  • 权限规则:检查你的Firebase实时数据库规则,确保当前用户有读取tindakan/Bedah Mulut节点的权限,没有权限会导致查询返回空快照

内容的提问来源于stack exchange,提问作者Kazuto Rito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 17:18:10