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

Firebase实时数据库$uid写规则配置后无法写入,交换规则恢复正常

Firebase实时数据库订阅写入规则异常问题

背景

我开发了一个支持用户升级为高级账户的网站,用户点击订阅按钮后,系统会提示操作成功并将订阅者数据写入Firebase实时数据库的subscribe集合,同时通过安全规则保护订阅数据不被随意查看。

问题现象

当配置如下安全规则时,用户无法点击订阅按钮完成写入操作:

{
  "rules": {
    "users": {
      ".indexOn": "username",
      ".read": true,
      ".write": true 
    },
    "subscribe":{
      "$uid": {
        ".read": "auth != null && auth.token.email_verified == true",
        ".write": "auth !== null && auth.uid === $uid"
      }
    }
  }
}

但交换subscribe节点$uid下的读写规则后,订阅功能恢复正常:

{
  "rules": {
    "users": {
      ".indexOn": "username",
      ".read": true,
      ".write": true
    },
    "subscribe":{
      "$uid": {
        ".read": "auth !== null && auth.uid === $uid",
        ".write": "auth != null && auth.token.email_verified == true"
      }
    }
  }
}

疑问

我无法理解为何添加$uid匹配的写规则时无法写入,交换规则后却正常,数据库结构未发生变化,两种规则条件的效果不应有差异。

推测方向

可能是当前数据库结构无公私集合区分导致,但尚未确认,参考了Firebase数据结构公私区分的相关讨论。

参考截图

users集合结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:32:52