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

Firestore中如何检查对象键数量及用安全规则限制键数不超10?

Firestore 对象键数量检查与安全规则限制

问题1:能否像数组使用.size()方法那样,检查Firestore中对象的键的数量?

Firestore安全规则中没有直接针对对象键数量的原生.size()方法,但可以通过keys()函数间接实现——该函数会返回对象所有键组成的数组,再对这个数组调用.size()就能得到键的数量。比如针对某个嵌套对象obj,可以用keys(request.resource.data.obj).size()获取它的键数量。

问题2:能否通过安全规则限制对象键数量不超过10?

可以实现,核心思路就是利用上述keys()+.size()的组合,在安全规则中校验写入的对象键数量。

假设你要写入的文档里有一个名为targetObj的字段(对应你示例中的obj),对应的安全规则可以这样写:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /your-collection/{doc} {
      allow write: if keys(request.resource.data.targetObj).size() <= 10;
    }
  }
}
  • request.resource.data代表要写入的完整文档数据
  • keys(request.resource.data.targetObj)提取targetObj的所有键并转为数组
  • .size() <=10限制键数量不超过10,超过则写入操作会被拒绝

这样即使客户端拦截失效,Firestore的安全规则也能从服务端层面确保对象不会无限膨胀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:35:49