【问题标题】:How to write Firebase database rules?如何编写 Firebase 数据库规则?
【发布时间】:2018-08-27 03:56:47
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    这个问题有几个部分:

    1. 每个用户都需要有自己的数据
    2. 只有当“他们自己的数据”还不存在时,用户才能写入
    3. 用户可以删除“自己的数据”

    将用户与他们自己的数据相关联的第一步是最简单的,方法是将每个用户的数据存储在其自己的节点中,该节点由用户的 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 */
              )
            "
          }
        }
      }
    }
    

    【讨论】:

    • 嗨弗兰克。对于一个不清楚的问题,这看起来是一个很好的答案。由于您似乎对 OP 的回答有所了解,您是否能够对其进行编辑,以便让更广泛的受众更清楚地了解它?我不知道它目前对除了问题作者之外的任何人有多大用处。
    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 2018-07-22
    • 2021-06-24
    • 2020-12-28
    • 2019-10-11
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多