删除特定的子项已添加 Firebase Swift 3 iOS10

Deleting a specific childAdded Firebase Swift 3 iOS10

guard let uid = FIRAuth.auth()?.currentUser?.uid else {return}
let userRef = FIRDatabase.database().reference().child("user_messages").child(uid)
            userRef.observe(.childAdded, with: { (snapshot) in
                let messageId = snapshot.key
                self.messageIdArr.append(messageId)
                print(self.messageIdArr[0])


        userRef.queryOrdered(byChild: "\(messageId)").queryEqual(toValue: "\(self.messageIdArr[0])").ref.removeValue()

    }, withCancel: nil)
}

大家好,这是我的代码,这是我的 Firebase 结构的屏幕截图。我正在制作一个 snapchat 克隆。

这就是我想要做的。下子user_messages。有一个包含当前用户 uid 的子项,其下是消息的不同 ID。当他们查看消息时,我引用了他们的 UID 从 Firebase 中删除的那条消息。

所以基本上,假设我想删除 KcQ7kSELivNWNTAuqck,我该怎么做?我现在的代码删除了 UID 下的所有内容。我只想删除3JEuRBs2U7QbUa7SAgppMmzQUeM2

下的1个messageId而不是全部5个

感谢您查看!

childAdded 被调用 存在于 3JEuRBs2U7QbUa7SAgppMmzQUeM2.

中的每个值

这意味着如果您在 "childAdded" 中调用 removeValue(就像您现在所做的那样),您最终将删除所有 ID。

解决方法: 如果您知道用户消息的密钥以及消息本身的密钥,那么您唯一需要编写的代码行是:

let messageToDelete = "KcQ7kSELivNWNTAuqck" //You should know how to get that
let userRef = FIRDatabase.database().reference().child("user_messages")
.child(uid).child(messageToDelete).removeValue();