在Firebase上获取Auth的对象或数组值

时间:2015-05-19 19:23:04

标签: angularjs firebase angularfire

我使用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。非常感谢你!

0 个答案:

没有答案