【发布时间】:2017-04-15 16:21:00
【问题描述】:
我想从 user_lookup 中删除 [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 但我得到了 Permission_denied
规则如下:
`"user_lookup": {
".read": "auth !== null",
".write": "auth !== null && !data.exists()",
".indexOn": [".value"],
我认为是因为“!data.exists()”,但我不想复制数据,那么如何解决这个问题? 以及如何删除孩子,任何帮助将不胜感激。
【问题讨论】:
-
如果数据已经存在,您的规则非常明确地拒绝写入操作。您可以描述您想要想要什么,而不是用数据说明您不想要什么?例如:“我希望经过身份验证的用户能够使用他们自己的 UID 写入他们的姓名并删除他们的姓名(使用他们自己的 UID)。”
-
还要确保用户已登录
-
@FrankvanPuffelen 如果 [name 或 uid] 尚不存在,我希望 auth 用户写下他们的姓名和他们的 uid。就像我不能写 'steven' 因为它已经存在于另一个用户中,我希望 auth 用户使用 uid 删除他们的名字。
-
@FrankvanPuffelen 有什么帮助吗?
标签: firebase swift3 firebase-realtime-database firebase-security