【发布时间】:2016-08-22 23:30:32
【问题描述】:
我在编写允许用户删除他们的 Firebase 帐户的过程时遇到了一些问题,这会删除他们的帐户以及他们在其帐户中拥有的所有帖子,包括图片。我正在查询 Firebase 数据库中的用户帖子,在它们出现时循环并删除它们。在这个循环的中间,我调用了一个传入图像 URL 的函数,以从 Firebase 存储中删除图像。我遇到的问题是由于异步的东西我无法得到有序的结果。我认为拥有完成处理程序会给它一些命令。我应该调查调度组吗?非常感谢任何帮助。
我的函数调用过程的开始:
ref.deleteFirebaseDBUsersPosts(deleter) { (success) -> Void in
if success {
print("The user and their info is completely gone!")
}
}
查询 Firebase 并循环访问用户发布和删除的功能:
func deleteFirebaseDBUsersPosts(uid: String, completion:(success: Bool) -> Void) {
let usersCurrentId = uid
ref.child(“posts”).queryOrderedByChild("uid").queryEqualToValue("\(uid)").observeEventType(.Value, withBlock: {snapshot in
if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshot{
print("SNAP: \(snap)")
if let postedImg = snap.childSnapshotForPath("imageUrl").value {
let postImgUrl = postedImg as! String
self.deletingOldUsersImgsFromStorage(postImgUrl) { (success) -> Void in
}
}
let key = snap.key
ref.child(“posts”).child(key).removeValue()
ref.child(“users”).child(usersCurrentId).removeValue()
}
print("COMPLETING")
completion(success: true)
}
})
}
从 Firebase 存储中删除图像:
func deletingOldUsersImgsFromStorage(postImgUrl: String!, completion:(success: Bool) -> Void) {
let deleteImgRef = ref.child(“images”).child("[imageNAME]")
deleteImgRef.deleteWithCompletion({ (error) in
if (error != nil) {
print("DEVELOPER: There was an error when trying to delete the image from Firebase Storage")
} else {
print("IMAGE SUCCESSFULLY DELETED FROM FIREBASE STORAGE")
}
completion(success: true)
})
}
【问题讨论】:
标签: ios swift firebase firebase-realtime-database