如何编写Firebase数据库规则?

时间:2018-03-18 13:47:10

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

我想在我的Firebase数据库中只接受一次值。然后,一旦有人向数据库提交了任何内容,他们将无法再次输入任何数据,直到他们删除了之前的数据。

如何实施此".write": "!data.exists() || !newData.exists()" 以符合我们要求的方式?

1 个答案:

答案 0 :(得分:0)

这个问题有几个部分:

  1. 每个用户都需要拥有自己的数据
  2. 用户只能自己编写"他们自己的数据"还不存在
  3. 用户可以删除自己的数据"
  4. 通过将每个用户的数据存储在由用户的UID标识的自己的节点中,将用户与他们自己的数据相关联的第一步是最容易的。例如。如果您的UID为abi5586378而我的UID为puf209103,我们的数据如下:

    "userData": {
      "abi5586378": {
        "name": "Abhishek Singh"
      }
      "puf209103": {
        "name": "Frank van Puffelen"
      }
    }
    

    为了确保这一点,我们可以使用以下规则:

    {
      "rules": {
        "userDara": {
          "$uid": {
            ".write": "
              auth.uid === $uid && /* user can only write their own data */
              (
                !data.exists() || /* user can write if there is no data yet */
                !newData.exists() /* user can clear existing data */
              )
            "
          }
        }
      }
    }