Firebase实时数据库安全规则中是否存在for循环?

时间:2020-10-31 12:09:14

标签: firebase firebase-realtime-database firebase-security

我浏览了许多网站和文档,其中包含有关安全规则及其部署方式的信息。但是我找不到的一件事是安全规则中的“ for循环”。
因此,在这种情况下,我有n个带有z选项的问题,并且n存储在数据库中的另一个变量n中,但是要确保答案键没有被篡改,或者如果出现任何问题,必须对其进行验证。

{othervalue:“ x”,答案:[1,2,3,4,5]}

我想验证它是否具有n个值,并且所有值均小于z,我该怎么办?

1 个答案:

答案 0 :(得分:1)

无法在Firebase的安全规则中循环数据,因为这会导致潜在的无限运行时间。

典型的解决方案是更改数据模型,以允许安全规则执行直接查找,或在不同的时间执行数据验证。

例如:要验证答案是否小于某个值,您可以验证各个值:

 MethodCall.MethodLocator.ForElementMatcher

我最近想到的一种验证数组长度的技巧是检查特定索引,并禁止其他操作:

{
  "rules": {
    "answer": {
      "$answer": {
        ".validate": "newData.isNumber() && newData.val() < 42"
      }
    }
  }
}

注意:我尚未在实践中测试这些规则,因此您的里程可能会有所不同。

因此在最后这些规则中,通过验证仅存在那些特定键(并且它们是顺序的),我们允许5个元素组成的数组(如您的示例)。