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

Firebase实时数据库:如何创建限制子对象大小的规则

Firebase Realtime Database 复杂数据类型的大小限制方案

你当前的规则仅对字符串类型数据生效,当写入对象、数组这类复杂类型时,newData.val().length会返回undefined,直接导致验证失败。要解决这个问题,需要区分数据类型,分别处理不同类型的大小校验逻辑:

修改后的规则如下:

{
  "rules": {
    /*
     * 仅允许读取特定用户数据
     * 仅允许用户写入自身键下的公开信息JSON或null
     */
    "$user": {
      ".read": "true",
      ".write": "auth.uid === $user",
      ".validate": "newData.val() == null || (newData.isString() && newData.val().length <= 123456) || (!newData.isString() && JSON.stringify(newData.val()).length <= 123456)"
    }
  }
}

规则逻辑说明:

  • newData.val() == null:保留原规则中允许写入null的逻辑
  • newData.isString() && newData.val().length <= 123456:针对字符串类型数据,直接校验字符长度
  • !newData.isString() && JSON.stringify(newData.val()).length <= 123456:针对对象、数组等非字符串类型,将数据序列化为JSON字符串后校验整体长度,确保序列化后的实际数据大小不超过限制

这样无论写入的是简单字符串还是复杂结构数据,都能准确限制数据的实际大小,避免恶意用户插入大量数据。

内容的提问来源于stack exchange,提问作者Dr-Bracket

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:09:15