updateChildValues 似乎不仅更新值

Posted

技术标签:

【中文标题】updateChildValues 似乎不仅更新值【英文标题】:updateChildValues seem not only updates value 【发布时间】:2018-05-16 16:46:23 【问题描述】:

我是新手 Firebase 框架,所以在我试图完成的教程中,作者仅通过调用 updateChildValues 函数来创建新值。

 @objc func handleRegister () 
    guard let email = emailTextField.text, let password = passwordTextField.text else 
        print("Form is not valid")
        return
    
    Auth.auth().createUser(withEmail: email, password: password)  (user, error) in
        if error != nil 
            print(error)
            return
        

        //successfully authenticated user
        let ref = Database.database().reference(fromURL: "https://my-awesome-project-18f30.firebaseio.com")
        ref.updateChildValues([ "someValue" : 123123])

    

看来 updateChildValues 函数不仅更新旧值,而且(另外)创建新值(如果以前不存在)。我试图在网络上搜索任何提及,但只找到重新分级更新旧值的信息,如果以前不存在旧值,则没有关于创建新值的信息。我对 updateChildValues func 的想法是真的吗?

【问题讨论】:

【参考方案1】:

是的,updateChildValues 就像 HTTP 方法中的 PUT。如果键的值存在,则更新它。否则,如果该值不存在,则创建该值。

正如Frank van Puffelen 所说的

Firebase 会自动为每个值创建键,并自动删除没有值的键。知道了这一点,您确实可以看到 updateChildValue 也可用于创建值,并通过使用空值更新键来删除键。

【讨论】:

Firebase 自动为每个值创建键,并自动删除没有值的键。知道了这一点,您确实可以看到updateChildValue 也可用于创建 值, 通过使用null 值更新键来删除键。 @FrankvanPuffelen 我编辑了我的答案,使您的评论更加完整 @FrankvanPuffelen 抱歉,我在哪里可以阅读官方文档中的相关信息?我没有找到关于“Firebase自动为每个值创建键,并自动删除没有值的键。”我很想在官方来源中阅读它,请给我一个线索,谢谢

以上是关于updateChildValues 似乎不仅更新值的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上使用基于时间的密钥更新 firebase 数据库

updateChildValue 写入数据

iOS 中的 Firebase updateChildValues,还有啥更优化的?

Xcode Firebase I 更新 Firebase 数据库值时出现问题

Firebase 保存数据方法异步或同步

似乎无法更新导入数据库中的嵌套值