这是我的规则:
{
"rules": {
"freecoinsrequest":{
".read": false,
".write": "
newData.child('uid').val() == auth.uid
1. && (root.child('users').child(auth.uid).child('/server/lasttimetookfreecoins').val() < now - 10000
2. || !root.child('users').child(auth.uid).child('/server/lasttimetookfreecoins').exists())
" ,
"uid":{
".validate" : true
},
"$other":{
".write": false,
".validate": false
}
},
}
}
因此,用户应该只能在以下情况下写入路径:
我无法理解为什么它会在模拟器中被拒绝。当我取消注释1和2时,如规则中所示,它可以工作。
感谢。
答案 0 :(得分:1)
在我的测试中,规则在/users/$uid/server/lasttimetookfreecoins
存在时产生了期望的结果但在没有的时候失败了。颠倒固定条件的顺序:
newData.child('uid').val() == auth.uid
&& (!root.child('users').child(auth.uid).child('/server/lasttimetookfreecoins').exists()
|| root.child('users').child(auth.uid).child('/server/lasttimetookfreecoins').val() < now - 10000)