我正在尝试为该节点编写规则,以便只有当前登录的用户才能使用仅值“ -5”,“ 3”或“ 1”来编辑/更新该节点,其余用户只能使用“ -3”或“ 3”对其进行编辑/更新
我拥有的数据结构是:
/ users / $ uid / votes
我到目前为止的规则是:
{
"rules": {
"users": {
"$uid": {
".read": true,
".write": "auth.uid === $uid",
"votes": {
".validate": "auth.uid === $uid && newData.isNumber() && (newData.val() === -5 || newData.val() === 3 || newData.val() === 1) || auth.uid !== $uid &&newData.isNumber() && (newData.val() === -3 || newData.val() === 3)"
}
}
}
}
}
有什么方法可以改善这些规则? “ auth.uid!== $ uid”是否可以确保当前未登录的用户只能以-3或3更新此“ votes”节点的值?
答案 0 :(得分:0)
这是完成相同操作(至少对我来说)的可读性更高的方法:
".validate": "(newData.isNumber() && (
newData.val() === 3 /* Everyone can set to 3 */
|| (auth.uid === $uid && newData.val() === -5 || newData.val() === 1) ||
|| (auth.uid !== $uid && newData.val() === -3)
)
但是规则允许每个身份验证用户写入$uid
的位置,这似乎很奇怪。您确定要让任何用户写给该用户的投票吗?
如果显示要创建的JSON以及要允许(和不允许)的写入操作的代码,可能会更容易获得帮助。