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

如何在Firestore Rules中从请求路径提取所需数据

问题原因

你之前的两种实现均不生效,核心是Firebase安全规则里的所有路径字符串都会以斜杠/开头,调用split('/')分割后第一个元素是空字符串,自然无法匹配到databases。

正确实现方案

方案1:修正分割后的索引取值

直接调整取数组的下标即可,代码如下:

function test() {
  // 调整索引为1,跳过分割后开头的空字符串
  return request.path.split('/')[1] == 'databases';
}

match /posts/{document} {
  allow update: if test();
  // ...其余规则
}

方案2:使用安全规则内置路径API(更推荐)

Firebase安全规则提供了原生的path()方法解析路径,不需要手动处理字符串分割的边界问题,代码更稳定:

function test() {
  // path方法会自动解析路径为分段数组,直接从索引0开始取有效分段即可
  return path(request.path)[0] == 'databases';
}

补充说明

如果你的校验逻辑需要用到当前match块对应路径的分段,更建议直接在match规则中定义变量捕获,比如你示例里的match /posts/{document},后续规则中可以直接使用document变量拿到当前文档ID,无需手动解析路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:09:02