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

如何在Firebase中根据唯一子节点值打印父节点及其子节点信息

问题修正方案

原代码存在的问题

  1. 重复调用ref.get(),既冗余又增加不必要的Firebase请求开销
  2. 循环逻辑混乱,导致重复打印联系人节点键,且索引路径错误(比如ref.get()['Agenda'][i][j]的路径完全错误,ref已经指向Agenda节点,无需再嵌套Agenda)
  3. 没有正确利用查询返回的query数据,query本身已经包含匹配的联系人完整数据,无需从根节点重新遍历

修正后的代码

def search():
    tlf = verification('TLF number: ', 0)
    if tlf < 0:
        print("ERROR")
        return 
        
    ref = db.reference('Agenda')
    # 执行查询,获取匹配Phone值的联系人数据
    query = ref.order_by_child('Phone').equal_to(tlf).get() 
    
    if query:  # 直接判断query是否非空,无需len(query)
        # 遍历查询结果(因为Phone唯一,只会有一个条目)
        for contact_key, contact_data in query.items():
            print(f"{contact_key}")
            # 遍历联系人的子节点键值对
            for field, value in contact_data.items():
                print(f"\t{field}: {value}")
    else:
        print("No results.")

代码说明

  • 直接使用query返回的键值对,避免重复请求Firebase
  • 利用for contact_key, contact_data in query.items()直接获取联系人节点键和对应的数据
  • 内层循环遍历联系人的字段(Name、Age、Phone),按要求格式打印

预期输出示例

Contact3
    Name: xxxxx
    Age: 12
    Phone: 123456789

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:24:27