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

Swift Firebase查询无结果:LCList对象按name查询返回空快照

解决LCList按name查询返回空Snapshot的问题

看起来你踩了一个常见的Firebase查询误区——你现在用queryOrderedByKey()是针对节点的键(Key)做排序和匹配,但你的目标字段name是每个LCList对象下的子属性(Child Property),这俩不是一回事,所以查询自然找不到数据~

给你修正后的代码,核心是把排序方式改成按name子属性来:

listsRef.queryOrdered(byChild: "name")
    .queryEqual(toValue: name) // 如果是精确匹配用这个,模糊前缀匹配用queryStarting(atValue: name)
    .observeSingleEvent(of: .value, with: { snapshot in
        // 这里处理返回的snapshot
        if snapshot.exists() {
            // 遍历或解析数据
            for child in snapshot.children {
                let childSnapshot = child as! DataSnapshot
                let listData = childSnapshot.value as! [String: Any]
                // 处理你的LCList对象数据
            }
        } else {
            print("没有找到匹配name的LCList对象")
        }
    }) { error in
        print("查询出错:\(error.localizedDescription)")
    }

另外给你几个排查要点,避免再踩坑:

  • 检查name字段的拼写:确保数据库里的字段名和代码里的"name"完全一致(大小写、空格都不能错)。
  • 确认数据库权限:如果你的Firebase数据库规则是默认的只读/只写权限,可能会导致查询返回空,要确保规则允许当前用户读取这些LCList数据。
  • 区分匹配类型:queryStarting(atValue: name)会返回所有name值以输入内容开头的对象,适合模糊前缀匹配;如果是要精确匹配某个name,用queryEqual(toValue: name)更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:16:11