我已阅读有关规则以及如何验证数据库中写入的新数据的Firebase文档。有一条线我不明白某件事情。
以下是developers.google.com中的firebase规则代码。
{
"rules": {
".write": true,
"widget": {rules)
".validate": "newData.hasChildren(['color', 'size'])",
"size": {
".validate": "newData.isNumber() &&
newData.val() >= 0 &&
newData.val() <= 99"
},
"color": {
// the value of "color" must exist as a key in our mythical
// /valid_colors/ index
".validate": "root.child('valid_colors/' + newData.val()).exists()"
}
}
}
}
".validate": "root.child('valid_colors/' + newData.val()).exists()"
是我不明白它是什么以及它做什么的。
root.child
?它是否用于访问颜色的孩子?newData.val()).exists()
? exists()
用于什么?答案 0 :(得分:2)
当你使用“root”时,它会一直回到顶部。想象一下像这样的数据库:
Database:
-users
-uid's
-username
-valid colors
-blue
-red
当您说root.child("users")
时,您会进入包含用户的地图。
当你说root.child("valid colors/blue")
时会查看有效颜色的子图。
存在检查数据库中是否存在。 newData
代表您要输入的数据。如果要输入“绿色”,则会失败。这是因为如果您的JSON看起来像这样:
"color" : green
newData.val() = green
您的数据库中是否存在?不,不在提供的示例中。这就是失败的原因。颜色为蓝色存在于您的数据库中。当您输入该数据作为新数据时,它将通过规则。