代码之家  ›  专栏  ›  技术社区  ›  Ruan

从FireBase返回可观察到的更改

  •  0
  • Ruan  · 技术社区  · 6 年前

    你究竟是如何从FireBase的on-change函数返回一个可观察的(前类型用户)。通常你可以做一个,但是这个功能是在里面的,所以我不知道如何从那里得到一个可观测的。

    注意:我可以将(那个用户)设置为我在里面的可观察值,但是当我的应用程序启动时,我的可观察值将为空。所以理想情况下,您将Observable设置为以下方法返回值

     this.fire.database().ref('users/' + firebaseUser.uid)
           .on('value', function (snapshot) {
              if (snapshot.val()) {
                that.user = snapshot.val();
                return of(that.user);
              }
            });
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   AvidRP    6 年前

    您不能像DougStevenson所说的那样只返回方法的值。你真正想做的是使用回调。例如:

    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
        }
    
    });
    

    希望这有帮助!

    推荐文章