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

Firestore规则问题:无suppliers集合时创建限制失效的解决需求

Firebase安全规则:处理供应商文档不存在的场景

修改后的规则代码如下:

function isNotRestrictedinSuppliers(){
  const value = 3;
  const suppliersDocPath = /databases/$(database)/documents/users/$(request.auth.uid)/settings/suppliers;
  // 文档不存在时直接允许创建;存在则检查数组长度是否达标
  if (!exists(suppliersDocPath)) {
    return true;
  }
  const suppliers = get(suppliersDocPath);
  return suppliers.data.suppliers_array.size() < value;
}

match /suppliers/{document=**}{        
  allow read, update, delete: if isSignedIn() && isValidUser();
  allow create: if isSignedIn() && isValidUser() && (isPremium() || isNotRestrictedinSuppliers());  
}

修改说明

  1. 解决文档不存在的报错问题:原代码直接用get()读取不存在的文档会触发权限错误,现在先通过exists()判断文档是否存在,不存在时直接返回true允许创建,符合需求。
  2. 简化规则结构:原代码中两个match /suppliers/...规则逻辑完全重复,合并为一个{document=**}规则,覆盖所有供应商子文档,减少冗余。
  3. 保留原有限制逻辑:当用户设置里的suppliers文档存在时,依然保留"高级用户或供应商数组数量小于3"的创建限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:07:04