Firebase数据库规则:仅当newData具有带有用户ID的子ID时,才应用更新

时间:2018-06-19 11:40:17

标签: firebase firebase-realtime-database firebase-security-rules

".write": "auth!=null && (
            (
               newData.val() != data.val() &&
               newData.child('id').val() === auth.uid
            ) 
            || !data.exists()
        )"

我正在使用该模式{id: {id: id}}更新一个列表元素,并将id子对象与auth.uid进行比较。由于某种原因,该行返回的权限被拒绝。

the error message

1 个答案:

答案 0 :(得分:1)

newData实际上包装了所有正在侦听的对象,而不仅仅是包装已更改的“新数据”。所以我需要更深一层地看:

"chats": {
  "$chat": {
    ".write": "auth!=null && ((newData.val() != data.val() && newData.child('users').child(auth.uid).exists()) || !data.exists())"
  }
}