【发布时间】:2018-07-27 15:12:54
【问题描述】:
我是 Firebase 和 Ionic 的新手,目前正在尝试在加载某个视图时从服务器获取一些数据。现在我能够在服务中获取数据,但我无法将获取的data 作为对控制器的承诺返回。这是调用服务的代码:
$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的响应会返回Observables,但您正试图通过then以Promise的身份访问它。你可能想.subscribe()代替? -
我在服务中获取数据,只是无法将其返回给发起调用的控制器。你能详细说明一下订阅方法吗?
-
您的代码中究竟在哪里定义了
getExpensesFromDB(...)?它是您登录控制台的方法吗?如果是这种情况,则您缺少返回语句。 -
getDataFromDB方法存在于名为fireBaseService的服务中,并被注入到控制器中。调用服务后,控制台部分的日志记录在控制器内部。我在服务中获取数据,然后返回 firebase ref 和响应本身(两个返回语句) -
是的,但在您的错误消息中显示
fireBaseService.getExpensesFromDB(...).then is not a function,但我在您的代码中的任何地方都看不到此方法。也许你正在调用一个未定义的函数。
标签: firebase ionic-framework firebase-realtime-database