【发布时间】:2020-10-29 20:17:13
【问题描述】:
当从某个child 获取firebase 数据时,我写Database.database().reference().child["mychild1"]... 但是如果我想同时从所有可用的子节点获取数据怎么办?我试过Database.database().reference().child["mychild1"].["mychild2].["mychild3]...,但没有返回任何东西?有没有办法做到这一点,还是我需要一次获取一个孩子的数据?
编辑
我按照建议省略了.child。虽然这很可能是获取所有数据的方式,但我突然从firebase 什么也没得到。我的firebase 逻辑中是否还有其他需要更改的内容?
extension Reactive where Base: DatabaseReference {
func fetchFireBaseData() -> Observable<[Recipe]> {
return Observable.create { observer in
self.base.observeSingleEvent(of: .value, with: { snapshot in
guard let data = snapshot.children.allObjects as? [DataSnapshot] else { return }
let recipes = data.compactMap { dict -> Recipe? in
guard let value = dict.value as? NSDictionary else { return nil }
return Recipe(fbKey: dict.key,
recipeImageObject: value[FbKeyName.image.description] as? String ?? "",
recipeTextObject: value[FbKeyName.text.description] as? String ?? "",
recipeHeaderObject: value[FbKeyName.header.description] as? String ?? "",
isFavorite: UserDefaults.standard.favoriteRecipes.contains(dict.key))
}
observer.onNext(recipes)
observer.onCompleted()
})
return Disposables.create()
}
}
}
【问题讨论】:
标签: ios swift firebase firebase-realtime-database