RxSwift Firebase Firestore データ取得メモ
Firebase FirestoreのデータをRxSwiftで取得するためのメモ
メモなので今後も追記予定
func getData() -> Observable<[Model]?> {
guard let uid = Auth.auth().currentUser?.uid else { return Observable.just(nil) }
return Observable.create { (observer: AnyObserver<Model?>) -> Disposable in
Firestore.firestore().document("path to data/\(uid)").getDocument { (document, error) in
if let error = error {
observer.onError(error)
return
}
guard let document = document, document.exists else {
observer.onError( /* データなしエラー */ )
return
}
// DocumentSnapshottから変換して返す
let model = try? Model(from: document)
observer.on(.next(model))
observer.onCompleted()
}
return Disposables.create()
}
}
RxFirebaseを使う場合
func getData() -> Observable<[Model]?> {
guard let uid = Auth.auth().currentUser?.uid else { return Observable.just(nil) }
return database.collection("path to datas").document(uid).rx.getDocument().map(Model.init)
}
オプショナルをなくす場合
func getData() -> Observable<[Model]> {
guard let uid = Auth.auth().currentUser?.uid else { return Observable.error( /* 定義していた何かのエラー */ ) }
return database.collection("path to datas").document(uid).rx.getDocument().map(Model.init)
}
Author And Source
この問題について(RxSwift Firebase Firestore データ取得メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/katafuchix/items/1bd2c2f7590b60a104a7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .