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

如何在Firebase实时数据库无认证时按值设置带推送键子节点写入规则

Firebase实时数据库规则修正方案

你需要给child-node下每个自动生成的推送键对应的子节点,基于其值设置写入验证规则。当前你的规则设置有误,导致写入测试失败,问题出在:

  • 验证规则写在了child-node节点层级,这里的newData指向的是整个child-node的对象(包含所有推送键子节点),而非单个推送键对应的值,所以newData.val().contains('3')无法正确验证单个值。
  • .validate里的!newData.hasChild('child-node')逻辑无意义,当前节点就是child-node,不会存在同名子节点。

正确的规则需要用**通配符$pushId**匹配每个自动生成的推送键,在子层级设置验证逻辑:

{
  "rules": { 
    "child-node": {          
      ".read": true,     
      ".write": true,
      "$pushId": {
        ".validate": "newData.isString() && newData.val().includes('3')"
      }
    }
  }
}

规则说明:

  • $pushId作为通配符,会匹配child-node下所有自动生成的推送键(比如-MySP3ncK324234pz_XZ)。
  • .validate规则确保:
    1. 新写入的数据是字符串类型(newData.isString());
    2. 字符串值中包含字符'3'(Firebase规则中使用includes而非contains)。

设置后,只有当推送键对应的子节点值包含'3'时,写入操作才会被允许,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:42:36