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

Posted

技术标签:

【中文标题】iOS 中的 Firebase updateChildValues,还有啥更优化的?【英文标题】:Firebase updateChildValues in iOS, what's more optimized?iOS 中的 Firebase updateChildValues,还有什么更优化的? 【发布时间】:2018-11-08 15:31:00 【问题描述】:

我在一个 iPhone 应用程序 (Swift 4) 上工作,我同时在几个节点上对我的数据库进行一些更新。

以下两种方法都有效,但我想知道最“干净”的方法是什么?

方式一:

 let idNotification = BaseViewController.database.child("notifications").childByAutoId().key
        BaseViewController.database.child("notifications").child(idNotification).updateChildValues(["content" : "some content"])
        BaseViewController.database.child("users").child(userID).child("notifications").updateChildValues(["something" : true])

方式 2:

    let idNotification = BaseViewController.database.child("notifications").childByAutoId().key
    let createNotif = ["content" : "some content"]
    let notifToUser = ["something" : true]
    BaseViewController.database.updateChildValues(["/notifications/\(idNotification)" : createNotif, "/users/\(userID)/notifications" : notifToUser])

如果这在崩溃的情况下有什么不同?对于第一个,如果两个更新请求中的一个失败,则另一个不会受到影响。如果仅两者之一失败,方法 2 会发生什么?

谢谢!

【问题讨论】:

【参考方案1】:

第一个 sn-p 向数据库发送多个写入操作(每次调用 updateChildValues 一个)。第二个 sn-p 只发送一个写操作。

两者都是完全有效的,都可能是您想要的。例如,如果两个更新之间没有关系,那么单独发送它们是有意义的。但是如果更新是相关的,那么一次性发送它们更有意义,因为这允许数据库的安全规则允许/拒绝它们作为一次写入操作。

【讨论】:

谢谢你这正是我想知道的:)

以上是关于iOS 中的 Firebase updateChildValues,还有啥更优化的?的主要内容,如果未能解决你的问题,请参考以下文章

Unity 中的 Firebase / Google VR 链接器错误 - iOS

无法从 iOS 中的 firebase 获取时间戳?

iOS中的Firebase“管理员用户”?

swift 5.1 Xcode iOS中的firebase服务类

如何从 iOS 中的 Firebase 消息通知中获取主题?

iOS 中的 Firebase:CFNetwork SSLHandshake 失败,尽管配置似乎正确。