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
swift 5.1 Xcode iOS中的firebase服务类