swift - 当节点值未知/自动生成 Swift 时更新 Firebase 中的子值

标签 swift firebase firebase-realtime-database

我的应用程序中有一个可用的搜索功能,它从数据库返回值并在我的屏幕上填充 TextView 。我想要实现的是,如果更新了 textview 的值,我们可以按下保存按钮,并且从搜索返回的值会在相同的数据库 ID 下更新。

这是我的数据库结构: enter image description here

这是我要实现的更新方法:

func updateRecord(){

    guard let pub: String = searchText.text?.lowercased() else { return }

    let databaseRef = Database.database().reference().child("Drinks")


    let query = databaseRef.queryOrdered(byChild: "pub").queryStarting(atValue: pub).queryEnding(atValue: "\(String(describing: pub))\\uf8ff")

    query.observeSingleEvent(of: .value) { (snapshot) in
        guard snapshot.exists() != false else {

            print("Error, doesn't exist")

            return
        }
        DispatchQueue.main.async {

            let signature = "E"


            //adding drink data
            let drink = [
                "pub": self.pubName.text!.lowercased() as String,
                "location": self.pubLocation.text!.lowercased() as String,
                "price": self.price.text!.lowercased() as String,
                "rating": self.rating.text!.lowercased() as String,
                "comment": self.comment.text!.lowercased() as String,
                "signature": signature
            ]
            databaseRef.child(--How do I access this token, for the drink in the picture I need to get "Lzsx_Vv5x5WVFsig-Zl"--).setValue(drink)

            return
        }
    }
}

基本上,在我的数据库中,我需要能够访问存储数据的自动生成的 ID。我知道“updateChildValues”方法可以工作,或者在我再次存储信息时再次使用“setValue”,但我如何才能访问存储数据的 ID?

谢谢你

最佳答案

我不是 100% 确定,因为我已经一年没有使用 Firebase 了。但请尝试以下操作。

query.observeSingleEvent(of: .value) { (snapshot) in
    if snapshot.childrenCount > 0 {
        for drink in snapshot.children.allObjects as! [DataSnapshot] {
            let id = drink.key; print(id)
        }
    }
}

关于swift - 当节点值未知/自动生成 Swift 时更新 Firebase 中的子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55043351/

相关文章:

ios - 如何将用户名和电子邮件保存到 firebase

Android Firestore通过文档id获取字段值

javascript - 当我首次创建用户进行身份验证时,如何将用户及其唯一 ID 添加到我的 Firebase 数据库中

android - 如何在 android 中使用 firebase 处理返回数据对象的 json

ios - NSURLConnection 委托(delegate)方法未在泛型类中调用

swift - 解析 REST API key 破坏客户端 key 身份验证

ios - 将 swift 类型转换为相同类型,为什么会起作用?

ios - 如何为自定义的 UISearchBar 实现 scopeButtonTitles?

node.js - 根据环境使用凭据初始化 Admin SDK

ios - 如何将 Firebase 子条目关联到主条目? (评论中有解释)