我的JSON看起来像这样:
users
username1: "WWOdh96Yr3Qs4N3GWDVq3OlQFfB2"
username2: "RJ6PztTLmsg222oUygWHtWpVHdg1"
我想用他们的密钥获取“username1”,即(auth.uid)!如果它发现我想删除它,那么删除后它将如下所示:
users
username2: "RJ6PztTLmsg222oUygWHtWpVHdg1"
self.ref.child("users").queryOrderedByValue().queryEqual(toValue: user?.uid).observe(.value, with: { snapshot in
if snapshot.exists() {
print("\(snapshot.value)")
snapshot.ref.child(snapshot.value as! String).removeValue() // this deleting every thing which is WRONG!
} else{
print("Not found--")
}
self.ref.removeAllObservers()
})
}
此代码删除用户中的所有内容。我只想删除特定用户。
答案 0 :(得分:3)
首先,我的方法是,如果我想在1点查询1个值,就像你在做,我做一个observeSingleEvent(这是最好的方法吗?)。但是为了解决您的问题,您忘了添加您的用户"路径。下面的代码使用起来更安全,因为你强制解包(这种情况不推荐使用):
let dataRef = self.ref.child("users")
dataRef.keepSynced(true)
if let usersUID = Auth.auth().currentUser?.uid{
dataRef.child("users").queryOrderedByValue().queryEqual(toValue: usersUID).observeSingleEvent(.value, with: { snapshot in
print(snapshot)
let values = snapshot.value as? NSDictionary
for (key, value) in values{
print(value) // does this print the uid?
print(key) // or this one?
self.ref.child("users/\(key)").removeValueWithCompletionBlock({ (err, ref) in
if err != nil {
print(err)
} else {
print(ref)
print("Removed")
}
})
}
})
}
尝试在打印(快照)
之后立即添加