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

如何在未知父节点的情况下读取Firebase指定节点的值

在未知父节点时获取指定节点的值

嘿,我来帮你搞定这个问题!从你的代码来看,你现在是在empresa/Farmacia/[当前用户ID]路径下遍历所有子节点并转换成Empresa对象。如果要在不知道父节点的情况下获取键为7NmECb...的节点的值,只需要在遍历过程中多做一层检查就行。

修改后的代码示例

private void recuperarPedidos(){ 
    DatabaseReference produtosRef = dReference 
        .child("empresa") 
        .child( "Farmacia") 
        .child(UsuarioFirebase.getIdUsuario()); 
    produtosRef.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
            empresas.clear(); 
            // 遍历所有未知的父节点
            for (DataSnapshot parentNode : dataSnapshot.getChildren()){ 
                // 查找当前父节点下的目标节点7NmECb...
                DataSnapshot targetNode = parentNode.child("7NmECb...");
                if (targetNode.exists()) {
                    // 根据你的数据类型获取值,这里示例用String,可按需修改
                    String targetValue = targetNode.getValue(String.class);
                    // 这里可以添加你对目标值的处理逻辑
                    Log.d("PedidoData", "找到目标节点的值:" + targetValue);
                }
                
                // 保留你原来的业务逻辑
                empresas.add(parentNode.getValue(Empresa.class)); 
            } 
            if (!empresas.isEmpty()) {
                categoria = empresas.get(0).getCategoria(); 
            }
        } 
        @Override 
        public void onCancelled(DatabaseError databaseError) { 
            // 建议添加错误日志,方便排查问题
            Log.e("FirebaseError", "数据获取失败:" + databaseError.getMessage());
        } 
    }); 
}

逻辑说明

  1. 首先还是保持原有的路径引用,获取到empresa/Farmacia/[用户ID]的快照
  2. 遍历该路径下的所有子节点(也就是你说的“未知父节点”)
  3. 对每个父节点,直接通过child("7NmECb...")定位到目标节点,用exists()判断该节点是否存在
  4. 如果存在,就根据数据类型获取对应的值,再做后续处理

额外提示

  • 如果目标节点在更深的层级,只需要在parentNode.child()里补充完整的相对路径即可,比如parentNode.child("subNode/7NmECb...")
  • 如果需要获取所有匹配的目标节点(而不是第一个),不要在找到后跳出循环,继续遍历所有父节点就行

内容的提问来源于stack exchange,提问作者José Otávio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:55:09