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

Angularjs 获取Firebase上Auth的对象或数组值,angularjs,firebase,angularfire,Angularjs,Firebase,Angularfire,我使用angularfire 1.1.1来存储我的应用程序对象,每个对象都会创建相关的索引。因此,当创建一个用户时,该用户将被添加到“users”表中,然后用户索引表将使用UID进行键控,并指向实际用户的id 调用主状态时,我运行checkAuth方法查看用户是否已登录。如果是这样,那么我想分配$rootScope.auth={id:userID,role:role}等等 该函数在我的登录方法中非常有效,但我不知道如何从我的checkAuth方法中获取值。我在$firebaseObject和$f

我使用angularfire 1.1.1来存储我的应用程序对象,每个对象都会创建相关的索引。因此,当创建一个用户时,该用户将被添加到“users”表中,然后用户索引表将使用UID进行键控,并指向实际用户的id

调用主状态时,我运行checkAuth方法查看用户是否已登录。如果是这样,那么我想分配$rootScope.auth={id:userID,role:role}等等

该函数在我的登录方法中非常有效,但我不知道如何从我的checkAuth方法中获取值。我在$firebaseObject和$firebaseArray上都尝试了$value,也尝试了用[0]调用它们,因为表中每个用户的uid只有一个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};
                });
            }
        });
    }

如果有人看到我把事情搞砸了,我很乐意知道。这是回购协议,如果有帮助的话。多谢各位

Mods,如果有误导性的话,请随意重写我的问题。如果你真的坚持把属于服务的东西放到$rootScope中,那么只使用$firebaseAuthData.ref.$onAuthfunctionauthData{$rootScope.authData=authData;}有什么错?谢谢@Kato。这对登录很有效。我的情况是,当用户已登录,但刷新页面时,会重新加载状态,因此会检查auth当前是否可用如果刷新页面,$onAuth仍然是正确答案。它仍然需要访问服务器,并且在完成时仍将使用当前的身份验证状态进行更新。