首页 > 解决方案 > 使用 rxjava2 获取 firebase 数据快照

问题描述

我正在尝试使用 RxJava2 从 Firebase 数据库中获取用户分数。我没有收到任何错误,logcat 很清楚。订阅者的任何方法都不起作用(未在 logcat 上显示文本)。

override fun getUserScore(){
        val query = scoreReference.child(FirebaseAuth.getInstance().currentUser!!.uid)

        rxfirebase(query).subscribeOn(Schedulers.io()).subscribe { object: Subscriber<DataSnapshot>{
            override fun onComplete() {
                Log.d("UserScoreComplete", "complete")
            }

            override fun onSubscribe(s: Subscription?) {
                Log.d("UserScoreSubscribe", "subscribe")
            }

            override fun onNext(t: DataSnapshot?) {
                val score = t?.getValue(Score::class.java)
                Log.d("UserScore", score?.score)
            }

            override fun onError(t: Throwable?) {
                Log.d("UserScoreError", t.toString())
            }
        } }
        }


    override fun rxfirebase(ref: Query): Observable<DataSnapshot>{
        return Observable.create { emitter ->
            ref.addListenerForSingleValueEvent(object: ValueEventListener {
                override fun onCancelled(p0: DatabaseError) {
                    Log.d("rxFirebase error", p0.message)
                    emitter.onError(p0.toException())
                }

                override fun onDataChange(p0: DataSnapshot) {
                    emitter.onNext(p0)
                    emitter.onComplete()

标签: javafirebasefirebase-realtime-databasekotlinrx-java2

解决方案


推荐阅读