角度回报承诺

时间:2015-11-04 09:37:48

标签: javascript angularjs angularfire angular-promise

我是Javascript和Angular的新手,抱歉这个问题。我正在使用Anguarfire并尝试根据他们的uid从firebase数据中获取用户数据。首先获取身份验证状态和uid并同步到用户数据。

这应返回用户信息。

.factory('Yetki', function($firebaseObject, $firebaseAuth){
    var ref = new Firebase("URL");
     var Yetki = function() { };
              Yetki.Alis = function()  {    

                          $firebaseAuth(ref).$onAuth(function(uyeDurum) {

                          var uyexDurum = uyeDurum;

                          return $firebaseObject(ref.child('users').child(uyexDurum.uid));
});
}

return Yetki;
})

使用此处的数据中使用角色信息。角权限。

.run(function(Yetki, Permission, $q){

    Permission
   .defineRole('fansub', function (stateParams) {
      var deferred = $q.defer();

      Yetki.Alis().then(function (data) {
        if (data.role === 'fansub') {
          deferred.resolve();
        } else {
          deferred.reject();
        }
      }, function () {
        // Error with request
        deferred.reject();
      });

      return deferred.promise;
    });

修改-1:

$()加载: 返回从数据库下载初始对象数据时解析的promise。 promise将解析为$ firebaseObject本身。 作为一种快捷方式,resolve()/ reject()方法可以选择直接传递给$ loaded():

示例:

var obj = $firebaseObject(ref);
obj.$loaded()
.then(function(data) {
console.log(data === obj); // true
})
.catch(function(error) {
console.error("Error:", error);
});


var obj = $firebaseObject(ref);
obj.$loaded(
function(data) {
console.log(data === obj); // true
},
function(error) {
console.error("Error:", error);
}
);

我的案例:

.factory('Yetki', function($firebaseObject, $firebaseAuth){
var ref = new Firebase("https://boiling-torch-7173.firebaseio.com");
return {
Alis: function()  { 
 $firebaseAuth(ref).$onAuth(function(uyeDurum) {
 var uyexDurum = uyeDurum;
 var rek = ref.child('users').child(uyexDurum.uid);
 var obj = $firebaseObject(rek)
 return obj.$loaded();
 });
});
}
}

1 个答案:

答案 0 :(得分:0)

你的问题是

Yetki.Alis = function()  {    

$firebaseAuth(ref).$onAuth(function(uyeDurum) {

var uyexDurum = uyeDurum;

return $firebaseObject(ref.child('users').child(uyexDurum.uid));

没有回报承诺。所以你需要去doc api并阅读$ firebaseObject(ref.child(' users')。child(uyexDurum.uid))。或者您可以使用$ q示例:

function($q){
   var def = $q.defer;
   $firebaseAuth(ref).$onAuth(function(uyeDurum) {
      def.resolve($firebaseObject(ref.child('users').child(uyexDurum.uid)));
   }
   return def
}