首页 > 解决方案 > 我的 firebase 数据库规则中的模拟失败

问题描述

这是我的节点杰森:

{
  "Users' Input History" : {
    "TdtIwvAPewRr1l9HY67PfkLBPbn2" : {
      "-M-eylUaQcCpoyTLwbhk" : "fate"
    }
  },
  "Users' Vocabulary List" : {
    "TdtIwvAPewRr1l9HY67PfkLBPbn2" : {
      "-M-eyxRLoCpDftWQ4cDn" : "hardliner"
    }
  }
}

这个“TdtIwvAPewRr1l9HY67PfkLBPbn2”是“Users' Input History”节点下一个可以读写自己的值(这里是“fate”)的用户的uid,是“Users' Input History”节点下的值(这里是“hardliner”) “用户词汇表”节点。

这个 Jason 将继续拥有多个用户 (uid) 和他们自己的多个值。每个新用户 (uid) 都将填充在“用户输入历史”节点和“用户词汇表”节点下,并且来自该新用户的新值将填充在新 uid 下。

例如,我希望用户 A(uid A)只能读取和写入他自己的值,而不能读取和写入其他用户(uid B、C、D 等)的值,所以我编写了我的数据库规则,如所以:

{
  "rules": {
    "Users' Input History": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    }
  },

    "Users' Vocabulary List": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    }
}

但是,如下图所示,我在第 12 行收到此错误消息:Simulation failed: Expected '}'。请注意,第 12 行有一个红色标记,第 13 行有一个 ^ 标记。 有错误的模拟


我尝试了什么:我在“用户词汇表”之前添加了“}”。那没有用,然后我在“$uid”之前添加了。两者都导致我出现相同的错误消息:解析错误。我不知道我还能尝试什么。我的规则错了吗?我该如何纠正?

标签: firebase-realtime-databasefirebase-security

解决方案


您的“用户词汇表”的嵌套子项看起来放错了位置。在“规则”对象内向上移动它。

{
  "rules": {
    "Users' Input History": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    },

    "Users' Vocabulary List": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    }

  }

}

推荐阅读