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

如何通过修改Firebase实时数据库规则实现条码匹配条件写入?

Firebase实时数据库规则实现条码存在性验证

问题描述

向Smart_Cart_Products节点添加新数据时,需要检查新数据的barcode值是否存在于Barcodes节点中,仅当条码存在时允许写入,否则拒绝。尝试了以下规则但未生效:

{
  "rules": {
    "Smart_Cart_Products": {
    ".read": true,
    ".write": "newData.child(\"barcode\").val() == data.child(\"barcode\").val()"   
    }
  } 
}

相关数据结构如下:

{
  "Smart_Cart_Products": [
    {
      "Desc1": "234",
      "Desc2": "248",
      "Desc3": "0.00",
      "barcode": "1674026293"
    },
    {
      "Desc1": "235",
      "Desc2": "249",
      "Desc3": "0.01",
      "barcode": "1674026293"
    },
    {
      "Desc1": "236",
      "Desc2": "250",
      "Desc3": "0.02",
      "barcode": "1674026293"
    },
    {
      "Desc1": "237",
      "Desc2": "251",
      "Desc3": "0.03",
      "barcode": "1674026293"
    },
    {
      "Desc1": "238",
      "Desc2": "252",
      "Desc3": "0.04",
      "barcode": "1674026293"
    }
  ],
  "Barcodes": [
    {
      "barcode": "1674026297"
    },
    {
      "barcode": "1674026296"
    },
    {
      "barcode": "1674026294"
    },
    {
      "barcode": "1674026293"
    }
  ]
}

解决方案

可以通过修改数据库规则实现需求,但需要先调整Barcodes的数据结构,再编写正确的规则:

1. 调整Barcodes数据结构

当前Barcodes是数组结构,实时数据库规则无法高效遍历数组检查元素是否存在。需要将其改为键值对结构,用条码值作为节点的key,值可设为true(或其他任意值),示例如下:

{
  "Barcodes": {
    "1674026297": true,
    "1674026296": true,
    "1674026294": true,
    "1674026293": true
  }
}

2. 编写正确的数据库规则

修改规则,验证新数据的barcode字段存在,且对应的Barcodes节点存在:

{
  "rules": {
    "Smart_Cart_Products": {
      ".read": true,
      ".write": "newData.hasChild('barcode') && root.child('Barcodes').child(newData.child('barcode').val()).exists()"
    }
  }
}

规则逻辑说明

  • newData.hasChild('barcode'):确保写入的新数据包含barcode字段,避免无条码的数据被写入
  • root.child('Barcodes').child(newData.child('barcode').val()).exists():检查新数据的条码值在Barcodes节点中存在,仅存在时允许写入

原规则无效原因

原规则newData.child("barcode").val() == data.child("barcode").val()仅用于更新数据时验证条码不被修改,完全未涉及Barcodes节点的存在性检查,因此无法实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:35:18