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

使用orderByChild查询Firebase Realtime DB时Permission denied如何解决

问题原因
  • 核心错误:你在构造查询的代码末尾额外调用了.ref,这会丢弃前面所有orderByChild、equalTo的查询条件,回到/items根节点的普通引用。你请求的是无查询条件的根节点读权限,自然不符合你规则中要求的「必须按owner字段排序、且查询值等于当前用户uid」的约束,触发权限拒绝。
  • 次要潜在问题:要保证执行查询时用户已经完成登录,firebase.auth().currentUser不为空,否则规则中auth.uid != null的校验不通过也会返回权限错误。建议将查询逻辑放到onAuthStateChanged的回调中执行,避免登录未完成就触发查询。

你当前配置的安全规则本身符合需求,不需要修改,仅需要调整前端查询代码即可。

修正后的查询代码
// 移除末尾的.ref,直接使用构造好的Query对象监听数据
const itemQuery = firebase.database().ref("items").orderByChild("owner").equalTo(firebase.auth().currentUser?.uid);

itemQuery.on('value', (v)=>{
   console.log("ok: ", v.val())
}, (e)=>{
   console.log("not allowed: ", e)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:42:05