FirebaseHelper
FirebaseHelper 是 Firebase 实时数据库的一个小型包装器,提供了获取、设置、删除和增加值的简化方法。
功能
- 设置 Firebase 实时数据库引用
- 读取值(获取)
- 写入/更新值(设置)
- 删除值
- 增加值(增加)
要求
Swift 4
安装
FirebaseHelper 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'FirebaseHelper'
使用
初始化 FirebaseHelper
实例
import Firebase
import FirebaseHelper
let firebaseHelper = FirebaseHelper(FirebaseDatabase.Database.database().reference())
FirebaseHelper(_ ref: DatabaseReference)
接受一个 DatabaseReference
。通常您希望这是数据库的根。
为了方便,您可以将类似的内容添加到项目中。
extension FirebaseHelper {
static let main: FirebaseHelper = {
FirebaseHelper(FirebaseDatabase.Database.database().reference())
}()
}
现在,您只需简单调用 FirebaseHelper.main
就可以从项目的任何位置访问 FirebaseHelper
实例。
常用数据库操作
获取
示例
FirebaseHelper.main.get("users", "john123", "favoriteFood") { result in
switch result {
case .failure(let error):
// handle error
case .success(let data):
// get string from data
}
}
API
public func get(_ first: String, _ rest: String..., completion: @escaping (Result<DataSnapshot, Error>) -> Void)
get()
方法接受一个或多个子节点参数,这些参数将在初始化 FirebaseHelper
实例时构建的 DatabaseReference
上建立。
回调返回一个 Result
对象。
public enum Result<T, Error> {
case success(T)
case failure(Error)
}
在这种情况下,T
是 DataSnapshot
。错误情况可能是由于传递了无效的子节点,或者数据库中发生了其他错误。
设置、删除、递增
set()
、delete()
和 increment()
的工作方式类似,但是当发生错误时会返回一个 Error
对象,否则返回 nil
。
示例
// The first parameter is an `Any` that gets set at the specified path.
FirebaseHelper.main.set("pizza", at: "users", "john123", "favoriteFood") { error in
if let error = error {
// handle error
}
}
FirebaseHelper.main.delete("users", "john123", "favoriteFood") { error in
if let error = error {
// handle error
}
}
FirebaseHelper.main.increment(by: 5, "users", "john123", "favoriteFoodEatenThisMonth") {
if let error = error {
// handle error
}
}
API
public func set(_ value: Any, at first: String, _ rest: String..., completion: @escaping (Error?) -> Void)
public func delete(_ first: String, _ rest: String..., completion: @escaping (Error?) -> Void)
public func increment(by amount: Int, at first: String, _ rest: String..., completion: @escaping (Error?) -> Void)
注意:您应该只对接受的值类型调用
set()
。请参见 Firebase 文档。
安全地创建 DatabaseReference
您经常需要调用更复杂的 FirebaseDatabase
函数,例如构建查询并在其上调用 observe(_ eventType: with block:)
。在这个方面 FirebaseHelper
仍然可以帮助您。
let ref = try? FirebaseHelper.main.makeReference("users", "john123", "eatingHistory")
let handle = ref?.queryOrdered(byChild: "timestamp").queryLimited(toLast: 50).observe(.value) { data in
// handle data
}
API
public func makeReference(_ first: String, _ rest: String...) throws -> DatabaseReference
makeReference
如果传递了无效的子节点,将会抛出错误。
合作者
授权
FirebaseHelper 在MIT授权下可用。更多详情请参阅LICENSE文件。