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

Firestore Rules的Match语句中可作为通配符使用的变量有哪些?

Firestore安全规则相关疑问解答

1. 关于doc的说明

doc不是Firestore规则的内置关键字,它只是你在路径匹配时自定义的通配符变量名,你可以任意替换为其他合法命名,比如{documentId}、{item}都可以,这个变量存储的是当前匹配到的文档ID字符串,和文档内部的字段没有任何关联。

你之前写的match myCollection/{email},本质也是把匹配到的文档ID赋值给email变量,和文档里的email字段没有关系,这也是此前的认知误区:通配符变量永远对应路径上的分段值,不会自动映射文档内的字段。

2. 关于resource.data结构的说明

resource是Firestore安全规则的内置对象,代表当前请求要访问的目标文档资源,resource.data就是该文档存储的所有字段数据集合,你可以通过resource.data.字段名的形式读取文档内任意字段的值做权限校验,这是规则做文档字段级权限控制的标准用法。

3. 通配符使用的其他注意事项

  • 单级通配符默认只匹配路径的单个分段:比如/myCollection/{doc}只会匹配myCollection集合下的直接子文档,不会匹配它的子集合内的内容,只有加了**的递归通配符才会匹配当前路径下所有层级的内容。
  • 通配符变量有作用域限制:你在哪个match块定义的通配符变量,只能在该块和它的嵌套子match块内访问,外层match块无法读取内层定义的通配符变量。
  • 通配符可以显式指定匹配范围:{var=*}是明确指定单级匹配,{var=**}是明确指定递归匹配,二者可以按需使用。

以上概念均可以在Firestore官方安全规则文档的路径匹配、内置对象章节查询到完整说明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:24:04