从firebase onchange观察到的回报

时间:2018-12-06 15:15:22

标签: firebase firebase-realtime-database observable

您到底是如何从Firebase的on-change函数中返回(ex类型为User)的可观察对象。通常,您可以只执行.then,但是此功能位于.on内,因此我不知道如何从那里获取可观察的东西。

注意:我可以只设置(that.user);到我的可观察对象内部,但是当我的应用启动时,我的可观察对象将为null。因此,理想情况下,将可观察值设置为等于以下方法return

override fun getClubhouseFor(context: ClubhouseContext): Single<Clubhouse?> {
    return staticClubhouseService.getClubhouseFor(clubhouseContext).flatMap { clubhouse ->
        if (clubhouse != null) return@flatMap Single.just(clubhouse)

        return@flatMap automatedClubhouseService.getClubhouseFor(clubhouseContext)
    }
}

1 个答案:

答案 0 :(得分:1)

您不能只为Doug Stevenson所说的方法返回一个值。您实际上想要做的是使用回调。例如:

public interface ResultsListener{

  public void onResult(User user);
  public void onFailed();

}


public void makeFirebaseCall(ResultsListener listener) {
    this.fire.database().ref('users/' + firebaseUser.uid)
           .on('value', function (snapshot) {
              if (snapshot.val()) {
                that.user = snapshot.val();
                listener.onResult(that.user);
              }
            });
}

当您调用makeFirebaseCall()时,您可以执行以下操作:

makeFirebaseCall(new ResultsListener() {
    @override
    void onResult(User user) {
        // do something with user
    }

    @override
    void onFailed() {
        // something failed
    }

});

希望这会有所帮助!