只有用户才能在Firebase中修改自己的数据

时间:2019-01-24 11:28:48

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

我希望仅使用户能够创建新帖子,并且仅使用户能够仅修改由他们创建的帖子。喜欢删除或编辑!

数据库结构

{
  "post" : {
    "-LWzHsKzAyK9Wfa1kbD_" : {
      "name" : "test",
      "title" : "test",
      "userId" : "8D3sENaBcLaXoGNnh1MPuoyj5LP2"
    },
    "-LWzHx6u-gQ7XoVR714a" : {
      "name" : "check",
      "title" : "check",
      "userId" : "WUM2HBkGo8TFDeOjEqO1s3lCj1p1"
    }
  }
}

我使用了此规则,但是保存No such method/property 'userId'.时却出错了

{
    "rules": {
    ".read": false,
    ".write": false,
        "report": {
        ".read": "auth != null",
        ".write": "auth != null && ( (data.exists() && data.userId === auth.uid) || !data.exists() || !newData.exists() )"
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您不能只使用属性访问器表示法来获取数据的子值。您必须调用child()函数以获取子项,并调用val()函数以获取其值。

所以:

data.child('userId').val() === auth.uid