在 Swift 中更新 Firebase 实时数据库中的父标题

Posted

技术标签:

【中文标题】在 Swift 中更新 Firebase 实时数据库中的父标题【英文标题】:Update a Parent Title in Firebase Realtime DB in Swift 【发布时间】:2022-01-03 10:30:14 【问题描述】:

我正在尝试更新我的数据库中的一位父母。但是,我没有成功。这是数据库的样子:

我可以像这样Update 描述到期日

    taskRef = Database.database().reference(withPath: "Tasks").child(titleOfTask)

    taskRef?.updateChildValues(["Due Date": date_time])
    taskRef?.updateChildValues(["Description": taskDescription])

但是,我正在尝试弄清楚如何更新任务的名称。例如,如果用户正在尝试更新任务“Alpha”的描述,并且还决定重命名该任务,我该如何更新名称?

我第一次尝试这样做,但没有成功,它只是在“Alpha”父级下创建了另一个键值对。

    newTaskRef?.updateChildValues([titleOfTask: taskTitle])

然后我意识到我的数据库引用已经是任务标题,所以它不会起作用。然后我考虑创建另一个仅对“任务”的数据库引用,并像这样更新标题:

    newTaskRef = Database.database().reference(withPath: "Tasks")
    newTaskRef?.updateChildValues([titleOfTask: taskTitle])

但这也不起作用。不知道我还能尝试什么,或者我哪里出错了。


重要事项:

taskTitle 保存用户输入的新输入 titleOfTask 是任务的旧名称。 (即,用作从 DB 读取的参考)

换句话说:

如果用户想要编辑“Alpha”任务,我们必须将字符串“Alpha”传递给database.reference,以便我们可以读取其值并更新描述和/或截止日期。所以原来Task的Title存放在“titleOfTask”中,新的任务标题会存放在“taskTitle”中


【问题讨论】:

【参考方案1】:

您不能直接更改数据库中的键。相反,您可以采用两步法:

    使用更新的标题和信息创建一个新密钥。 从数据库中删除旧密钥

【讨论】:

谢谢你,我刚刚删除并阅读了它,完美运行!

以上是关于在 Swift 中更新 Firebase 实时数据库中的父标题的主要内容,如果未能解决你的问题,请参考以下文章

从firebase实时数据库IOS Swift中检索数据

如何在 Swift 中保存实时 Firebase 数据库中的数据?

如何知道在 swift 4 中实时 Firebase 的 childChanged 事件类型中更新了哪个子子项

Swift:为用户搜索 Firebase 数据库

Swift 中的 Firebase 实时数据库

在 Firebase 实时数据库中实现用户名(swift 4)