Firebase 数据库中多个验证规则的使用

Ken*_*eno 3 database validation json firebase firebase-realtime-database

我不清楚 Firebase 数据库验证规则的几个方面,并且已经阅读了文档几次,我的具体案例/问题如下:

我的数据方案是这样的:

{
  "aNumber" : 0.794180524700695,
  "clicks" : 11
}
Run Code Online (Sandbox Code Playgroud)

我当前的验证规则是这样的:

{
  "rules": {
    ".validate": "newData.child('aNumber').isNumber()",
     ".read": true,
    ".write": true      
  }
}
Run Code Online (Sandbox Code Playgroud)

该规则当前允许写入“aNumber”(如果它是数字),但我还想验证字段“clicks”是否为数字。

我尝试使用 and 运算符 (&&):

{
  "rules": {
   ".validate": "newData.child('aNumber').isNumber() && 
                 newData.child('clicks').isNumber()",
     ".read": true,
    ".write": true      
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我只更新一个字段时它会失败:

{
 "aNumber": 2
}
Run Code Online (Sandbox Code Playgroud)

我将如何验证这一点?一般来说,验证多个独立字段的好方法是什么?

谢谢

Ken*_*eno 5

因此,经过一些实验,我找到了自己问题的答案:

我的新规则如下所示:

{
 "rules": {
  ".read": true,
  ".write": true,
  "aNumber": {
      ".validate": "newData.isNumber()"
     },
   "clicks": {
      ".validate": "newData.isNumber()"
     }                
 }
}
Run Code Online (Sandbox Code Playgroud)

因此,验证不是在全局范围内验证特定的子节点,而是在规则中的特定节点级别进行验证,这对某些人来说可能是显而易见的,但我花了一些时间才意识到。