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
相关产品推荐
相关产品推荐

