我是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();
});
});
}
}
答案 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
}