我使用angularfire 1.1.1来存储我的apps对象,每个对象都创建了相关的索引。因此,当创建用户时,该用户被添加到用户' table然后用户索引表获取UID键并指向实际用户的id。
当调用主状态时,我运行checkAuth()方法以查看用户是否已登录。如果是,那么我想分配$ rootScope.auth = {id:userID,role:role}等。
该功能在我的登录方法中运行良好,但我不知道如何从checkAuth()方法中获取值。我在$ firebaseObject和$ firebaseArray上尝试了$ value,也尝试用[0]调用它们,因为每个用户的表中只有一个id值。
草率正则表达式用于将分号从SimpleLogin:47更改为SimpleLogin-47以键入索引。
这里的代码不起作用:
function authCheck(){
var getAuth = $firebaseAuth(Data.ref);
console.log('signed in as', getAuth.$getAuth().uid);
var uid = getAuth.$getAuth().uid.toLowerCase().replace(/'+/g, '').replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "-").replace(/^-+|-+$/g, '');
var userIndexRef = Data.ref.child('index/users/uid/'+uid);
var userIndexArray = $firebaseArray(userIndexRef);
var userIndexObject = $firebaseObject(userIndexRef);
console.log(userIndexArray, userIndexObject);
var realId = '';
angular.forEach(userIndexObject, function(key, id){
realId = id;
$rootScope.auth = realId;
return realId;
});
}
以下是可行的登录代码:
function login(email, pass) {
ref.authWithPassword({email:email,password:pass}, function(error, authData){
if (error) {
console.log(error);
} else {
console.log('signed in as',authData.uid);
var uid = authData.uid.toLowerCase().replace(/'+/g, '').replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "-").replace(/^-+|-+$/g, '');
angular.forEach(Data.dataObject.index.users.uid[uid],function(id, key){
$rootScope.role = Data.dataObject.users[id].role;
$rootScope.auth = {authData:authData, id:id, role:Data.dataObject.users[id].role};
});
}
});
}
如果有人看到我搞砸了,我会很高兴知道。如果有帮助,这里是回购https://github.com/irthos/medviz。非常感谢你!