我有以下数据库:
actions : [ {
"added" : 1535293085383,
"countdown" : 9999999999,
"item" : 1,
"type" : "a"
}, {
"added" : 1535293085383,
"countdown" : 999999999,
"extra" : "bb",
"item" : "2",
"type" : "b"
}, {
"added" : 1635293085383,
"countdown" : 1,
"item" : 3,
"type" : "c"
}]
我希望所有登录的用户都能够读取所有数据,但只能写入倒数节点。
我的想法是,每当用户读取数据时,该值就会减少,但不允许他们更新任何其他节点
有我写的规则
{
"rules":{
".read":false,
".write":false,
"actions":{
".indexOn":[
"added"
],
".read": "auth != null",
"countdown":{
".write" : "auth != null"
}
}
}
它拒绝未经身份验证的用户读取内容
允许从经过身份验证的用户读取信息
甚至拒绝在倒数节点中从经过身份验证的用户写信
我该如何解决
答案 0 :(得分:2)
您缺少安全规则中的某个级别。现在,您允许写入/actions/countdown
。但是您希望允许写入/actions/*/countdown
。要捕获该要求,请在规则中使用$
变量:
{
"rules":{
".read":false,
".write":false,
"actions":{
".indexOn": [ "added" ],
".read": "auth != null",
"$actionid": {
"countdown":{
".write" : "auth != null"
}
}
}
}
现在由于$actionid
下的countdown/.write
规则适用于/actions
的每个子节点。