我浏览了许多网站和文档,其中包含有关安全规则及其部署方式的信息。但是我找不到的一件事是安全规则中的“ for循环”。
因此,在这种情况下,我有n个带有z选项的问题,并且n存储在数据库中的另一个变量n中,但是要确保答案键没有被篡改,或者如果出现任何问题,必须对其进行验证。
{othervalue:“ x”,答案:[1,2,3,4,5]}
我想验证它是否具有n个值,并且所有值均小于z,我该怎么办?
答案 0 :(得分:1)
无法在Firebase的安全规则中循环数据,因为这会导致潜在的无限运行时间。
典型的解决方案是更改数据模型,以允许安全规则执行直接查找,或在不同的时间执行数据验证。
例如:要验证答案是否小于某个值,您可以验证各个值:
MethodCall.MethodLocator.ForElementMatcher
我最近想到的一种验证数组长度的技巧是检查特定索引,并禁止其他操作:
{
"rules": {
"answer": {
"$answer": {
".validate": "newData.isNumber() && newData.val() < 42"
}
}
}
}
注意:我尚未在实践中测试这些规则,因此您的里程可能会有所不同。
因此在最后这些规则中,通过验证仅存在那些特定键(并且它们是顺序的),我们允许5个元素组成的数组(如您的示例)。