Firebase删除子权限被拒绝

Firebase删除子权限被拒绝,firebase,swift3,firebase-realtime-database,firebase-security,Firebase,Swift3,Firebase Realtime Database,Firebase Security,JSON如下所示: 我想从用户查找中删除子项[steven:uid] 代码如下: self.ref.child("user_lookup").queryOrderedByValue().queryEqual(toValue: user?.uid).observe(.value, with: { snapshot in if snapshot.exists() { print

JSON如下所示:

我想从用户查找中删除子项[steven:uid]

代码如下:

self.ref.child("user_lookup").queryOrderedByValue().queryEqual(toValue: user?.uid).observe(.value, with: { snapshot in

                            if snapshot.exists() {

                                print("I got it")
                                // remove [steven, uid]

                            } else {

                                print("Not found")

                            }
我不知道如何删除该子项,但我已尝试键入removeValue,但获得了\u拒绝的权限

规则如下:

`"user_lookup": {
      ".read": "auth !== null",
            ".write": "auth !== null && !data.exists()",

        ".indexOn": [".value"],
我想是因为!data.exists,但我不想复制数据,所以如何修复?
我怎样才能把孩子带走,任何帮助都将不胜感激。

我想这可能是你想要的:

".write": "
  (auth.uid === newData.val() && !data.exists()) || 
  (auth.uid === data.val() && !newData.exists()"

第一个表达式或or允许用户在其名称尚不存在时声明其名称。第二个表达式允许删除它们的声明。

如果数据已经存在,则规则非常明确地拒绝写入操作。你能描述一下你想要什么,而不是说你不想要什么吗?例如:我希望经过身份验证的用户能够使用自己的UID写入自己的姓名,并使用自己的UID删除自己的姓名。此外,请确保该用户已签名in@FrankvanPuffelen如果[name或uid]还不存在,我希望授权用户写入他们的姓名和uid。就像我不能写“steven”,因为它已经为另一个用户存在,我希望授权用户用uid删除他们的名字。@FrankvanPuffelen需要帮助吗?谢谢帮助!但它不起作用,我甚至不能用模拟器写任何东西,如果我通过数据库添加已经存在的名称,例如justin,用于另一个uid,uid将被更新,因此名称被盗我不希望发生这种情况,我希望每个用户都有不同的名称,不会与其他用户重复,每个用户都可以用其他不存在的名称更新自己的名称,并且每个用户都可以用自己的uid从数据库中删除自己的名称。它的用户名系统,希望你能得到它,并能帮助我你在截图中写的值不是UID。它是一个包含UID的JSON对象。要获取问题中的结构,请将数据更改为xx。我已执行snapshot.ref.removeValue,但在/user\u查找失败:权限被拒绝时出现错误setValue:或removeValue:at