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

Firestore安全规则是否支持对字段名(键)使用正则表达式匹配?

Firestore安全规则支持对字段名(键名)使用正则表达式匹配,但你之前的写法存在语法错误,需要调整。

错误原因说明

request.resource.data.keys()返回的是字段名组成的列表类型,request.resource.data本身是Map类型,这两种类型都没有内置的matches()方法。matches()是字符串类型专属的方法,因此你尝试的两种写法都无法生效。

正确写法

你可以先获取所有字段名的列表,再遍历每个键逐一做正则匹配,分两种常用场景:

  1. 校验所有字段名均符合正则规则
    如果要确保请求携带的所有字段名都匹配指定正则,使用列表的all()方法:
// 示例:限制所有字段名只能由小写字母、数字、下划线组成
allow write: if request.resource.data.keys().all(key => 
  key.matches('^[a-z0-9_]+$')
);
  1. 校验存在至少一个符合正则规则的字段名
    如果要判断请求中是否存在匹配指定正则的字段,使用列表的any()方法:
// 示例:允许携带任意以username开头的字段
allow write: if request.resource.data.keys().any(key => 
  key.matches('^username.*$')
);

常用场景示例

// 示例:仅允许修改前缀为public_的字段,以及系统内置的create_time、update_time字段
allow update: if request.resource.data.keys().all(key => 
  key.matches('^public_.*$') || key in ['create_time', 'update_time']
);

内容的提问来源于stack exchange,提问作者nth-child

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:00:06