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

Firestore安全规则中的List索引是0-based还是1-based?

Firestore 安全规则 List 类型未公开说明整理

以下是官方文档未明确标注的 List 类型核心特性与用法:

  • 全等匹配无需逐元素校验:可以直接使用==运算符判断两个 List 内容是否完全一致,比如request.resource.data.tags == ["public", "readonly"]可直接校验数组内容完全符合预期
  • 嵌套数组的匹配逻辑:hasAll()、hasAny()、hasOnly()三个成员方法天然支持嵌套数组元素匹配,只要对应层级的元素类型和值完全一致即可命中规则
  • 索引越界无报错:访问超出 List 长度的索引时会直接返回null,不会触发规则执行中断,你可以直接通过request.resource.data.myList[5] == null来判断 List 长度是否小于6
  • 空 List 类型校验规则:xxx is list的类型校验对空 List 同样返回true,不需要额外做非空判断后再校验类型
  • 内置方法支持 Set 类型入参:上述三个匹配方法可以直接传入 Set 类型作为参数,不需要手动做类型转换,比如request.resource.data.tags.hasAll(resource.data.allowTags.toSet())可正常执行
  • 未公开的join方法:List 内置了官方未提及的join()方法,支持传入分隔符将 List 拼接为字符串,比如request.resource.data.userIds.join("|") == "1001|1002"可以作为特殊场景的匹配方式

注意:所有 List 内置方法传入非 List/Set 类型参数时,会直接返回false而非抛出执行异常,规则匹配不生效时可优先排查入参类型是否符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:54:05