2017-11-15 1 views
0

그래서 내가 이메일/암호 인증 작업 내 AngularJS와 + AngularFire이 정의되지 않은, 또한 당신이 볼 수 있듯이 "사용자가"어디, 내 응용 프로그램에 인증 된 모든 사용자를 나열 할 수 있습니다라는 노드가 있습니다 enter image description here

$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'); 
     }); 
    } 
} 

재 : 이것은 내 컨트롤러

.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; 
}); 

:

그래서, 내 인증 서비스에 나는 AngularJS와 공장을 가지고 sponse는 console.log (obj.name)에서 정의되지 않았습니다. 그리고 사용자 UID가 있음을 알 수 있습니다 (위 그림 참조).

내 getStudent 함수에는 정확한 uid => 4BAIdOXZv6NTEKsjgI15JTajFtz2를 표시하는 console.log (studentId)가 있습니다. 그러나 $ firebaseObject를 잡으려고 할 때 정의되지 않은 것을 보여줍니다.

답변

0

개체가로드되기 전에 콘솔에 쓰려고합니다.

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(); 
}); 
+0

와우, 사람이 솔직히 말해서, 나는 이것을 위해 바보가 된 기분,하지만 감사 :이 이름을 쓰기를 시도하기 전에 대기하는 그래서 console.log()$loaded 핸들러 내부해야합니다! 도와 줘서 고마워! XD –