$ firebaseObject undefined

时间:2017-11-15 01:36:13

标签: javascript angularjs firebase angularfire

所以我的AngularJs + AngularFire通过电子邮件/密码身份验证工作,还有一个名为"用户"在哪里我可以列出所有通过我的应用验证的用户,你可以看到: enter image description here

所以,在我的身份验证服务中,我有一个AngularJs工厂:

.factory('Auth', function($firebaseAuth, $firebaseObject, $firebaseArray){

 var ref = firebase.database().ref();
 var auth = $firebaseAuth();
 var users = $firebaseArray(ref.child('users'));
 var firebaseUser = auth.$getAuth();

var Auth = {

getStudent: function(studentId){
  console.log(studentId)
  return $firebaseObject(ref.child('users').child(studentId));
},

studentSignupProfile: function(profile){
    console.log('Student profile service..!');
    var obj = Auth.getStudent(firebaseUser.uid);
    console.log(obj.name);

    return obj.$loaded().then(function(){
      obj.phone = profile.phone;
      obj.address = profile.address;
      return obj.$save();
    });
}

};

return Auth;
});

这是我的控制者:

 $scope.studentSignupProfile = function(profile){
    console.log(profile);
    if (profile == undefined) {
        toaster.pop('info','Deseamos saber más acerca de tí!');
    } else {
        Auth.studentSignupProfile(profile).then(function(msg){
            toaster.pop('info','Perfil actualizado!');
            $state.go('home');
        });
    }
}

在console.log(obj.name)中未定义响应。正如您所见,用户UID存在(上图)。

在我的getStudent函数中有一个console.log(studentId),它向我展示了确切的uid => 4BAIdOXZv6NTEKsjgI15JTajFtz2。但是当我试图抓住$ firebaseObject时,它显示我未定义。

1 个答案:

答案 0 :(得分:0)

在加载对象之前,您正在写入控制台。 console.log()应位于$loaded处理程序内,以便在尝试编写名称之前等待:

var obj = Auth.getStudent(firebaseUser.uid);

return obj.$loaded().then(function(){
   // object now loaded
   console.log(obj.name);

  obj.phone = profile.phone;
  obj.address = profile.address;
  return obj.$save();
});