无法获取Firebase对ID的引用以定义当前用户

时间:2016-03-25 18:18:37

标签: angularjs ionic-framework firebase angularfire

我认为我的密钥,数组,值和ID在这里混淆了,但似乎无法弄清楚。

我想要一种方法让当前用户进入ProfileCtrl控制器。这是我使用promises $waitForAuthonce的当前实现。但我不确定目前是否实施。

var user = "";
var key = "";
var uids = Users.allUIDs();
console.log(uids);

Auth.$waitForAuth().then(function () {
     var uid = Auth.$getAuth().uid;
     console.log(uid);
     for (var i = 0; i < uids.length; i++) {
         console.log(uids[i].value().toString());
         if (uids[i].value() == uid) {
             var userKeyRef = new Firebase(firebaseUrl + uids + uids[i]);
             userKeyRef.once('value').then(function(snapshot) {
                 key = snapshot.val();
             }).then(function(){
                 user = new Firebase(firebaseUrl + users).child(key).val();
             });

             console.log(user);
             console.log('User exists')
             break;
         }
     }
     $scope.user =user;
 }).catch(function (error) {
     console.log(error);
 })

我检查数组中的uid,如果它们与经过身份验证的用户匹配,我会从uids数组中获取密钥,并使用该密钥在users数组中查找用户对象。这是我的数据库:

{
  "uids" : {
    "7d34fb85-813c-4586-857e-f062aed67f32" : {
      "-KDQDk5vwJXmFngwI7iQ" : {
        "registered" : true
      }
    }
  },
  "users" : {
    "-KDQDk5vwJXmFngwI7iQ" : {
      "email" : "random@gmail.com",
      "firstname" : "Random",
      "lastname" : "Person",
      "uid" : "7d34fb85-813c-4586-857e-f062aed67f32"
    }
  }
}

有一个更清晰的例子,当我console.log从我的服务中返回的uid时,它看起来像:

enter image description here

这意味着uid正在经历?

以下是我获取uids的代码:

app.factory('Users', ['$firebaseArray','$firebaseObject', 'Auth', function ($firebaseArray, $firebaseObject, Auth) {

    var ref = new Firebase("https://urlformyapp.firebaseio.com");
    var users = $firebaseArray(ref.child('users'));
    var uids = $firebaseArray(ref.child('uids'));

    return {
        all: function () {
            return users;
        },
        allUIDs: function () {
            return uids;
        },
        get: function (id) {
            // Simple index lookup
            return users[id];
        }
    }

}])

有人能告诉我出了什么问题吗?为什么uids[i].value.toString()没有打印任何内容?鉴于我的数据库结构,我的代码逻辑有什么问题吗?

0 个答案:

没有答案