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

Firebase规则函数支持三元运算符与动态路径吗?

Firebase规则函数的三元运算符与动态路径支持问题

1. 三元运算符的支持情况

Firebase规则的表达式语言完全支持三元运算符,你代码中let path = request.auth.token.userType == 'user' ? 'data-user-professional' : 'data-admins-professional'这类写法是合法且常用的。它能简洁地根据条件返回不同值,适合在规则中处理动态分支判断,比如路径选择、权限逻辑区分等场景。

2. 基于用户ID的动态路径支持情况

这种实现方式是被支持的。你通过三元运算符动态生成path变量,再将其拼接进get()的路径中,符合Firebase规则的语法要求。不过需要注意几个细节:

  • 确保userId、clientId等变量在当前规则上下文里可正确获取(比如从请求路径参数、用户认证信息中提取)
  • 使用get()读取其他文档时,要控制读取次数,避免因过度依赖外部文档导致规则执行超时
  • 建议先通过exists()判断目标文档是否存在,再调用get(),防止因文档不存在引发错误

修正后的代码示例(还原HTML转义的&&)

function externalNestedProfessionalKeysCreate(requestResource) {
  let requiredFields = ['id', 'name', 'days', 'metaData','dragAndDrop',  'subNote'];
  let optionalFields = ['sectorSplit'];
  let allFields = requiredFields.concat(optionalFields);
  let path = request.auth.token.userType == 'user' ? 'data-user-professional' : 'data-admins-professional'

  return requestResource.keys().hasOnly(allFields) && 
      get(/databases/$(database)/documents/$(path)/$(userId)/clients/$(clientId)).data.colCount <= 2
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:12:36