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

Firestore安全规则如何仅在指定文档存在时允许操作?

问题排查点
  • 首先确认你用来测试写入操作的账号,自身对应的admin文档路径是否正确:你写的exists(/databases/$(database)/documents/profiles/$(request.auth.uid)/roles/admin)是检查请求发起者自己的profiles/[当前用户uid]/roles/admin文档是否存在,不是检查你要修改的目标用户的admin文档。你要确认测试账号自己的该路径下确实存在admin文档,而不是只有你要修改的目标用户有该文档。
  • 确认数据结构匹配规则逻辑:你的admin标识必须是roles子集合下的名为admin的独立文档,不能是profiles文档内的roles嵌套字段里的admin属性,如果是后者你需要把判断逻辑改成get(/databases/$(database)/documents/profiles/$(request.auth.uid)).data.roles.admin == true。
  • 检查路径大小写:Firestore路径、集合名、文档名都是大小写敏感的,确认你的集合名是roles、文档名是admin完全匹配,没有大小写拼写错误。
  • 可以使用Firebase控制台自带的「规则游乐场」工具模拟写入请求,填写对应的用户UID后可以直接看到isAdmin()函数的每一步返回结果,快速定位是request.auth为空还是exists判断返回假。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:33:01