gpt4 book ai didi

swift - 在 Firebase swift 中删除特定的子节点

转载 作者:行者123 更新时间:2023-11-28 05:51:49 24 4
gpt4 key购买 nike

你能帮我解决这个问题吗?我想删除数据库中的特定消息。

我的数据库是这样的:

• MESSAGES  
••(childByAutoID XXXXXXXXX)
•••email: user1@gmail.com
•••message: hello there
•••timestamp: 329842938592

••(childByAutoID XXXXXXXXX)
•••email: user1@gmail.com
•••message: where are you?
•••timestamp: 872985042750

••(childByAutoID XXXXXXXXX)
•••email: user2@gmail.com
•••message: basketball?
•••timestamp: 845938459349

我尝试使用此代码,但它删除了当前用户 (user1) 的错误帖子。

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {


if (editingStyle == .delete) {
jobRequests.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .automatic)

if let email = Auth.auth().currentUser?.email {

Database.database().reference().child("MESSAGES").queryOrdered(byChild: "email").queryEqual(toValue: email).observeSingleEvent(of: .childAdded, with: { (snapshot) in

snapshot.ref.removeValue()

那么我怎样才能删除消息“你在哪里?”及其成员。

enter image description here

最佳答案

查询需要与您要删除的内容相匹配。

如果你想删除文本为 "where are you?" 的消息,你应该查询:

let messagesRef = Database.database().reference().child("MESSAGES")

messagesRef.queryOrdered(byChild: "message").queryEqual(toValue: "where are you?")...

如果你想删除所有带有特定电子邮件的消息,你应该查询:

messagesRef.queryOrdered(byChild: "email").queryEqual(toValue: "email1@gmail.com")...

如果你想删除一个特定的消息,你必须知道它的 key ,然后:

messagesRef.queryOrderedByKey().queryEqual(toValue: "-L....")...

或更惯用的:

messagesRef.child("-L....").observeSingleEvent(of: .value, with: { (snapshot) in
snapshot.ref.removeValue()

(请注意,我们在这里观察的是 value,而不是 .childAdded,因为我们不再使用查询了。

或者更简单;由于您已经知道要删除的节点的完整路径,因此无需阅读任何内容:

messagesRef.child("-L....").removeValue()

关于swift - 在 Firebase swift 中删除特定的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52688644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com