Validation 验证Firebase中的$Location
我正在尝试对firebase应用程序中的传入数据进行验证。我的结构在底部。为了清晰起见,我删除了现有的验证规则-但是我们可以假设在根Validation 验证Firebase中的$Location,validation,firebase,firebase-security,Validation,Firebase,Firebase Security,我正在尝试对firebase应用程序中的传入数据进行验证。我的结构在底部。为了清晰起见,我删除了现有的验证规则-但是我们可以假设在根规则级别允许读写 $categoryid将如下所示: 1234: {1:{...}, 2:{...}, 3:{...}} 我想确保$categoryid(在上面的示例中是1234)是数字的-但是规则“.validate:“$categoryid.isNumeric()”会导致“无此方法或属性”错误 我可以检查类别中的data.child($categoryid),
规则
级别允许读写
$categoryid
将如下所示:
1234: {1:{...}, 2:{...}, 3:{...}}
我想确保$categoryid
(在上面的示例中是1234
)是数字的-但是规则“.validate:“$categoryid.isNumeric()”
会导致“无此方法或属性”错误
我可以检查类别中的data.child($categoryid)
,但是该变量在该级别不存在,并导致“未知变量”错误
我肯定我错过了一个技巧
{
"rules": {
"categories": {
"$categoryid": {
"$itemid": {
"members": {
"$id": {
}
}
}
}
}
}
}
目前没有很好的方法可以做到这一点,但有一种方法是将$categoryId
存储在一个字段中,然后检查该字段是否为数字
使用这些安全规则:
{
"rules": {
"categories": {
"$categoryid": {
".validate": "'' + newData.child('meta/id') === $categoryId && newData.child('meta/id').isNumber()"
"meta": {},
"items": {
"$itemid": {
"members": {
"$id": {
}
}
}
}
}
}
}
}
然后,我们可以通过运行以下命令创建新类别:
categoriesRef.child(1234).set({meta: {id: 1234}});
这些规则将检查a)$categoryId
是否匹配$categoryId/meta/id
,并且$categoryId/meta/id
是一个数字。要进行此验证,可以使用RegEx/^[0-9]+$/
{
"rules": {
"categories": {
"$categoryid": {
.validate": "$categoryid.matches(/^[0-9]+$/)"
"$itemid": {
"members": {
"$id": {
}
}
}
}
}
}
}