Firebase实时数据库-规则

时间:2020-11-08 01:04:09

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

我的Firebase RTD的结构如下:

messages :{
   userId1: {
               userId2: {sentFrom: userId1, messageText: 'hello user 2 from user 1'}
            },
   userId2: {
               userId1: {sentFrom: userId1, messageText: 'hello user 2 from user 1'}
            },
}

如果路径为message/userId1,我希望user1能够写到数据库。..但如果路径为message/anyOtherUserId/userId1,我也希望user1能够写到数据库

我在规则中使用的json如下所示。...当我击中路径message/userId1时成功了...但是当我击中message/anyOtherUserId/userId1时它返回“模拟集被拒绝”

{
  "rules": {
    "messages": {
        "$userId": {
          ".write": "$userId === auth.uid ? true : (root.child($userId).val()===auth.uid ? true : false)",
        }, 
    }
  } 
}

1 个答案:

答案 0 :(得分:3)

您可能需要进一步级联规则。在模拟中尝试以下方法:

{
    "rules": {
        "messages":{
          "$userId":{
            ".write": "$userId === auth.uid",
            "$userIdChild": {
              ".write": "$userIdChild === auth.uid"
            }
          }
        }
    }
}

我希望这会有所帮助!