爱奥尼亚+;Firebase无法使用从数据库获取的数据返回承诺

爱奥尼亚+;Firebase无法使用从数据库获取的数据返回承诺,firebase,ionic-framework,firebase-realtime-database,Firebase,Ionic Framework,Firebase Realtime Database,我是Firebase和Ionic的新手,目前正在尝试在加载某个视图时从服务器获取一些数据。现在我可以在服务中获取数据,但我无法将获取的数据作为对控制器的承诺返回。这是调用服务的代码: $scope.$on('$ionicView.beforeEnter', function () { var user = firebase.auth().currentUser; fireBaseService.getDataFromDB(user.uid).then(functi

我是Firebase和Ionic的新手,目前正在尝试在加载某个视图时从服务器获取一些数据。现在我可以在服务中获取数据,但我无法将获取的
数据作为对控制器的承诺返回。这是调用服务的代码:

 $scope.$on('$ionicView.beforeEnter', function () {
    var user = firebase.auth().currentUser;       
    fireBaseService.getDataFromDB(user.uid).then(function(res){
      console.log(res); 
    });
以下是调用Firebase API的服务:

this.getDataFromDB = function(uid){
    return firebase.database().ref('table/' + uid).on('value', function(snapshot) {
        var data = snapshot.val(); //data is available here
        return data;
    });
}

这就是我得到的错误:

TypeError: fireBaseService.getExpensesFromDB(...).then is not a function

我只是在这里猜测,但我认为通常来自
firebaseService
的响应返回
observatives
,但您试图通过
然后
作为
承诺访问它。您可能想改为
.subscribe()
?我在服务中获取数据,只是无法将数据返回到呼叫的控制器。你能详细介绍一下subscribe方法吗?你的代码中到底在哪里定义了
getExpensesFromDB(…)
?这是您登录到控制台的方法吗?如果是这种情况,则缺少返回语句。
getDataFromDB
方法存在于名为
firebaservice
的服务中,并被注入控制器。调用服务后,登录到控制台部分位于控制器内部。我获取服务中的数据,并返回firebase ref和响应本身(两个返回语句)是的,但在错误消息中显示
fireBaseService.getExpensesFromDB(…)。then不是一个函数
,但我在代码中的任何地方都看不到此方法。可能您正在调用一个未定义的函数。
call from controller
fireBaseService.getDataFromDB(user.uid, function(res) {
  console.log(res);
}

service call
getDataFromDB = function(uid, callback){
    return firebase.database().ref('table/' + uid).on('value', function(snapshot) {
        var data = snapshot.val(); //data is available here
        callback(data);
    });
}