从firebase onchange返回observable

问题描述 投票:0回答:1

你究竟如何从firebase中的on-change函数返回一个observable(ex type User)。通常你可以做一个。然后这个功能在.on里面,所以我不知道如何从那里得到一个可观察的。

注意:我可以设置(that.user);在我的可观察内部,但随后我的应用程序启动时,我的observable将为null。因此,理想情况下,您将设置您的observable等于以下方法返回

 this.fire.database().ref('users/' + firebaseUser.uid)
       .on('value', function (snapshot) {
          if (snapshot.val()) {
            that.user = snapshot.val();
            return of(that.user);
          }
        });
firebase firebase-realtime-database observable
1个回答
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
    }

});

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.