如何强制节点中子节点的最大数量?

2024-01-26

如何使用安全规则强制节点的最大子节点数?

/bar/customers/$customer/drinks_ordered

子女不应超过十五个。


您似乎可以对订购的饮料使用数字 ID,然后尝试这样的操作;它会失败,因为 ID 是一个字符串:

"$customer_id": {
    "drinks_ordered": {
       "$drink_id": {
          ".validate": "$drink_id > 0 && $drink_id < 16" // error
       }
    }
}

相反,您可以使用计数器并验证计数器为 1-15,然后验证饮料 ID 与计数器匹配。

"$customer_id": {
    "counter": {
       // counter can only be incremented by 1 each time, must be a number
       // and must be <= 15
       ".validate": "newData.isNumber() && newData.val() > 0 && newData.val() <= 15 && ((!data.exists() && newData.val() === 1) || (newData.val() === data.val()+1))"
    },
    "drinks_ordered": {
       // new record's ID must match the incremented counter
       "$drink_id": {
          // use .val()+'' because $drink_id is a string and Firebase always uses ===!
          ".validate": "root.child('bar/customers/'+$customer_id+'/counter').val()+'' == $drink_id"
       }
    }
}

当然,你的饮料会是这样的:

 /bar/customers/george_thorogood/counter/3
 /bar/customers/george_thorogood/drinks_ordered/1/burbon
 /bar/customers/george_thorogood/drinks_ordered/2/scotch
 /bar/customers/george_thorogood/drinks_ordered/3/beer

现在,在客户添加另一种饮料之前,他们必须将计数器设置为 4(这是唯一可以设置的值),然后添加具有相同 ID 的饮料。

有点迂回,但它确实可以完成工作:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制节点中子节点的最大数量? 的相关文章

随机推荐

  • 如何使 UILabel 中的文本缩小字体大小

    如果 UILabel 包含太多文本 如何设置标签以缩小字体大小 这是我设置 UILabel 的方法 descriptionLabel UILabel alloc initWithFrame CGRectMake 200 30 130 150
  • 接口变量是否具有值类型或引用类型语义?

    接口变量是否具有值类型或引用类型语义 接口由类型实现 这些类型要么是值类型 要么是引用类型 显然 两者int and string实施IComparable and int是一个值类型 并且string是一个引用类型 但是这个呢 IComp
  • 如何使用 javascript 更新 parse.com 中的当前对象?

    我想用 javascript 更新 parse com 中已有的对象 我所做的是我首先通过查询退休了该对象 但我不知道如何更新它 这是我使用的代码 有什么问题吗 var GameScore Parse Object extend Drive
  • 通过 Jenkins REST API 获取 IP 地址?

    我的任务是对 Jenkins 的一些工作进行一些健康检查 这个想法是通过 Jenkins Rest API 获取作业的状态和关联的 IP 地址 这样我就可以使用该信息与另一个 Restful API 进行交互 我创建了一个 groovy 脚
  • 如何禁用所有打字稿类型检查?

    我想使用 TypeScript将来 但目前 我选择在 Create React App 中安装 TypeScript 稍后我会回去添加类型 因此 我想禁用所有类型检查 现在 当我做这样的事情时
  • 定时器 C#.开始、停止和获取调用之间的时间量[重复]

    这个问题在这里已经有答案了 可能的重复 如何测量函数运行了多长时间 https stackoverflow com questions 10107140 how to measure how long is a function runni
  • 使用枚举实现单例(Java 中)

    我读到可以实施Singleton在Java中使用Enum例如 public enum MySingleton INSTANCE 但是 上面的方法是如何工作的呢 具体来说 一个Object必须被实例化 这里 怎么样MySingleton被实例
  • ServerSocket - 真的有必要 close() 它吗?

    我有这个该死的结构 public void run try if portField getText equals String p portField getText CharSequence numbers 0123456789 btn
  • nexttick 和 onupdated 有什么区别?

    我正在关注某人的教程来学习如何nexttick有效 但我无法理解它和onUpdated 如下所示 引用部分几乎会出于相同的原因出现或被调用 为了进一步理解它 我创建了下面发布的代码 并如图所示nexttick之后被调用onUpdated 你
  • 使用 NodeJS 在 MySQL 中运行 SQL 文件

    我正在使用mysql https github com felixge node mysqlNodejs 的插件 它非常适合做我到目前为止需要的一切 然而我遇到了一个绊脚石 我创建了一个导出 mysql 池的 MySQL 提供程序 var
  • JVM 与大型内存对象相关的问题

    我有一个二进制文件 其中包含一个短字符串列表 该列表在启动时加载并作为从字符串到 protobuf 包含字符串 的映射存储在内存中 不理想 但由于遗留问题很难改变设计 最近 该列表已从约 2M 条目增长到约 20M 条目 导致构建地图时失败
  • 如何使资源重定向到rails中的另一个控制器

    我有两个模型 Book and Magazine 属性方面几乎没有差异 但我希望它们共享相同的控制器和视图 Book 模型的控制器和视图 我的问题是 考虑到 Book 已经设置如下 在 paths rb 中设置 Magazine 模型的路线
  • Xerces-C 中的 XPath 支持

    我支持使用 Xerces C 进行 XML 解析的旧版 C 应用程序 我已经被 Net 宠坏了 并且习惯使用 XPath 从 DOM 树中选择节点 有什么方法可以访问 Xerces C 中一些有限的 XPath 功能吗 我正在寻找类似 se
  • 快速调整图片大小工具/脚本

    我在服务器上的一个文件夹中按日期组织了很多图像 500 000 我制作了一个 PHP 脚本来复制和裁剪子文件夹 拇指 上的每个 JPG 文件 但由于 PHP 不支持多线程 因此速度非常慢 我需要有关如何进行的建议 Python 是一个不错的
  • Paypal 按钮 + IPN(传递付款人用户名)

    有没有办法也传递和接收自定义变量 例如付款人的用户名 我不能强迫我的用户使用与他们在我的网站上使用的相同的贝宝电子邮件地址 最初由贝宝返回 传递额外的用户名将有助于轻松检查付款人的身份 您可以在发布到 PayPal 的表单中包含自定义隐藏字
  • PostgreSQL:外键列中的 NULL 值

    在我的 PostgreSQL 数据库中 我有下表 简化 CREATE TABLE quotations receipt id bigint NOT NULL PRIMARY KEY CREATE TABLE order confirmati
  • 使用 JavaScript 更改鼠标指针

    我想使用 JavaScript 脚本来更改网站上的鼠标指针 最好用 CSS 来完成 但我的要求是一个可以分发给很多人以嵌入到他们网站的头部部分的脚本 通过 CSS 可以通过以下方式进行操作 html cursor cursorurl 如何在
  • 不使用箭头函数将参数传递给 prop 函数

    我听说将箭头函数作为 prop 传递并不理想 因为它每次都会创建一个新函数 这会导致性能问题 然而 我并不完全确定如何完全摆脱它们 如下例所示 class Home extends Component onCardPress message
  • 更改 SharePoint 库 URL

    如何更改 SharePoint 库的 URI 根据Google搜索 大多数人说在Designer中更改库的名称 通过右键单击 gt 重命名 将导致URI更改 但对我来说这只是更改名称 我正在使用 SharePoint 2010 Founda
  • 如何强制节点中子节点的最大数量?

    如何使用安全规则强制节点的最大子节点数 bar customers customer drinks ordered 子女不应超过十五个 您似乎可以对订购的饮料使用数字 ID 然后尝试这样的操作 它会失败 因为 ID 是一个字符串 custo