【问题标题】:How to delete from Firebase database如何从 Firebase 数据库中删除
【发布时间】:2016-09-22 06:43:01
【问题描述】:

您好,我已经学习了本教程:https://www.youtube.com/watch?v=XIQsQ2injLo

这解释了如何保存和从数据库中检索,而不是如何删除。我想知道如何删除属于正在删除的单元格的数据库节点。谢谢

【问题讨论】:

  • 使用remove函数删除

标签: swift firebase firebase-realtime-database


【解决方案1】:

编辑。 Swift 3Swift 4 的代码已更新。

我总是使用带有完成处理程序的删除:

static let ref = Database.database().reference()

static func remove(child: String) {

    let ref = self.ref.child(child)

    ref.removeValue { error, _ in

        print(error)
    }
}

例如,如果我想删除以下值:

我调用我的函数:remove(child: "mixcloudLinks")

如果我想更深入并删除例如“添加”:

我需要稍微改变一下功能。

static func remove(parentA: String, parentB: String, child: String) {

    self.ref.child("mixcloudLinks").child(parentA).child(parentB).child(child)

    ref.removeValue { error, _ in

        print(error)   
    }
}

调用如下:

let parentA = "DDD30E1E-8478-AA4E-FF79-1A2371B70700"
let parentB = "-KSCRJGNPZrTYpjpZIRC"
let child = "added"
remove(parentA: parentA, parentB: parentB, child: child)

这只会删除“添加”的键/值

编辑

如果是 autoID,您需要将 autoID 保存到您的字典中以便以后使用。

这是我的功能之一:

func store(item: MyClassObject) {

    var item = item.toJson()

    let ref = self.ref.child("MyParentFolder").childByAutoId()
    item["uuid"] = ref.key // here I'm saving the autoID key into the dictionary to be able to delete this item later
    ref.setValue(item) { error, _ in

        if let error = error {

           print(error)
        }
    }
}

因为那时我将 autoID 作为字典的一部分,以后可以将其删除:

然后我可以像.child(MyClassObject.uuid).remove... 一样使用它,这就是自动生成的ID。

【讨论】:

  • 感谢大卫的回复。问题是我使用 autoId 保存值,所以我不知道密钥。
  • 您需要将 autoID 保存到您的项目中。
  • 完成。我认为这应该让你知道如何删除它
  • 谢谢大卫,我还没有测试过,但我认为这可能是解决方案!
  • 我敢肯定...很高兴为您提供帮助。如果您需要进一步的帮助,请随时询问
【解决方案2】:

我们可以将随机生成的 id 作为用户 id 存储在数据库中,然后检索删除

例如:

let key = ref?.childByAutoId().key
let post = ["uid": key,
                "name": myName,
                "task": myTask]

    ref?.child(key!).setValue(post)

为了删除 id 的 setvalue 为 nil 例如:

 var key = [string]()
ref?.child(key[indexPath.row]).setValue(nil)
    key.remove(at: indexPath.row)
    myArray.remove(at: indexPath.row)
    myTable.reloadData()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2016-09-20
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多