删除特定的子项已添加 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();
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
感谢您查看!
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();