【问题标题】:Return observable from firebase onchange从 firebase onchange 返回 observable
【发布时间】:2018-12-06 15:15:21
【问题描述】:

你到底是如何从 firebase 中的 on-change 函数返回一个可观察的(前类型用户)。通常你可以做一个 .then 但这个函数在 .on 里面所以我不知道如何从那里得到一个 observable。

注意:我可以设置 of(that.user);到那里的我的可观察对象,但是当我的应用程序启动时,我的可观察对象将为空。因此,理想情况下,您将 observable 设置为等于以下方法 return

 this.fire.database().ref('users/' + firebaseUser.uid)
       .on('value', function (snapshot) {
          if (snapshot.val()) {
            that.user = snapshot.val();
            return of(that.user);
          }
        });

【问题讨论】:

  • on() 监听器不能返回任何东西。他们只听变化。无论你想完成什么,我认为你做错了。

标签: firebase firebase-realtime-database observable


【解决方案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
    }

});

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 2019-08-05
    • 2021-11-07
    相关资源
    最近更新 更多