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

Firebase查询返回错误数据:如何排除无Pricing键的用户档案

解决Firebase查询排除无Pricing键的用户档案问题

这是因为Firebase Realtime Database在按Pricing子节点排序时,没有该键的档案会被视为值为null,而null在排序优先级里会排在所有整数的前面,所以你的queryEnding(atValue:)会把这些无Pricing的档案也包含进来。

要排除这类档案,你只需要在查询中额外添加一个queryStarting(atValue:)条件,让查询只包含值大于null的条目——因为任何整数(无论正负)都比null大,所以可以设置起始值为整数类型的最小值,或者根据你的业务场景(比如定价都是非负的)设置为0。

修改后的代码示例

usersReference = Database.database().reference(fromURL: "https://someRef")
    .child("users")
    .queryOrdered(byChild: "Pricing")
    .queryStarting(atValue: NSNumber(value: Int.min)) // 覆盖所有整数类型的Pricing
    .queryEnding(atValue: pricingToSearch)
    .observe(...)

如果你的Pricing都是非负整数,也可以简化成:

.queryStarting(atValue: 0)

额外注意事项

别忘了在Firebase控制台的数据库规则中添加Pricing字段的索引,否则查询可能无法高效执行:

{
  "rules": {
    "users": {
      ".indexOn": "Pricing"
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:40:00