У меня есть фабрика, которая проверяет authData пользователя, используя firebase. Я хочу получить доступ к данным пользователей, таким как имя, адрес электронной почты и т. Д., Но я не могу понять, как получить данные моментального снимка в объекте, который я могу использовать. Я новичок в Javascript.Как вернуть данные пользователя из Factory в контроллер с использованием Firebase
это моя фабрика:
angular.module('.....')
.factory('UserDataService', function($q, $firebase, $firebaseAuth, FIREBASE_URL) {
var authData = {};
function authDataCallback(authData) {
if (authData) {
var ref = new Firebase(FIREBASE_URL + "/userProfiles/" + authData.uid);
ref.on("value", function(snapshot) {
var data = snapshot.val();
});
} else {
console.log("User is logged out");
}
}
// Register the callback to be fired every time auth state changes
var ref = new Firebase(FIREBASE_URL);
ref.onAuth(authDataCallback);
return authData;
});
второго Покушение:
На этот раз я могу получить пользователь подробность, но это не спасет в переменную службу и возвращается к контроллеру как null. Вот мой код:
var firebaseRef = new Firebase(FIREBASE_URL);
var authObj = $firebaseAuth(firebaseRef);
activate();
var service = {
userInfo: null
};
function activate() {
// Add listeners for authentication state changes
authObj.$onAuth(function(authData) {
if (authData) {
// Load the userInfo
loadUserInfo(authData);
} else {
// Destroy the userInfo Object if one exists
if (service.userInfo) {
service.userInfo.$destroy();
service.userInfo = null;
}
}
});
}
function loadUserInfo(authData) {
var userRef = firebaseRef.child('userProfiles').child(authData.uid);
var loadedInfo = $firebaseObject(userRef);
// console.log(loadedInfo);
loadedInfo.$loaded()
.then(function() {
service.userInfo = loadedInfo;
console.log(service.userInfo.name);
})
.catch(function(error) {
switch (error.code) {
case 'PERMISSION_DENIED':
alert('You don\'t have the permission to see that data.');
break;
default:
alert('Couldn\'t load the user info.');
}
});
}
return service;
Это немного неясно (по крайней мере для меня), что вы пытаетесь достичь. Можете ли вы попытаться описать свое желаемое поведение/результат немного больше? – LionC
Я пытаюсь получить доступ к объекту «authdata» с контроллера, который содержит имя пользователя и т. Д. ... Я хочу передать моментальный снимок в объект authdata – nareeboy