2015-06-18 20 views
15

Planuję utworzyć głównych użytkowników wywołań z drzewa, które będą zawierać nazwy różnych użytkowników używanych jako USERNAME. Więc od każdej nazwy użytkownika zostaną uwzględnione ich dane, np. Pełna nazwa, adres, nr telefonu. Chcę wiedzieć, jak uzyskać dane każdego użytkownika po zalogowaniu się w jego profilu.Jak połączyć każdego użytkownika z jego danymi w Firebase?

Odpowiedz

36

Przede wszystkim proponuję spędzić trochę czasu na zapoznaniu się z bazą ogniową, czytając Firebase Guide (Link to old Firebase Guide). Wszystko, co musisz wiedzieć, aby odpowiedzieć na własne pytanie, jest tam dostępne. Ale dla uproszczenia położę przykład tutaj:

Zacznijmy bezpieczeństwa, tutaj są podstawowe zasady Firebase potrzebne do tego przykładu: (źródło: Understanding Security) (wiek źródło: Understanding Security)

{ 
    "rules": { 
    "users": { 
     "$user_id": { 
     ".write": "$user_id === auth.uid" 
     } 
    } 
    } 
} 

I pominie faktyczne tworzenie i logowanie użytkowników oraz skupi się na pytaniu o przechowywanie i odzyskiwanie danych użytkownika.

Przechowywanie danych: (źródło: Firebase Authentication) (stary źródło: User Authentication)

// Get a reference to the database service 
var database = firebase.database(); 
// save the user's profile into Firebase so we can list users, 
// use them in Security and Firebase Rules, and show profiles 
function writeUserData(userId, name, email, imageUrl) { 
    firebase.database().ref('users/' + userId).set({ 
    username: name, 
    email: email 
    //some more user data 
    }); 
} 

Uzyskane dane Firebase będzie wyglądać następująco:

{ 
    "users": { 
    "simplelogin:213": { 
     "username": "password", 
     "email": "bobtony" 
    }, 
    "twitter:123": { 
     "username": "twitter", 
     "email": "Andrew Lee" 
    }, 
    "facebook:456": { 
     "username": "facebook", 
     "email": "James Tamplin" 
    } 
    } 
} 

I last but not least Retreiving z danych, można to zrobić na kilka sposobów, ale dla tego przykładu użyję prostego przykładu z podręcznika firebase: (źródło: Read and Write data) (stare źródło: Retreiving Data)

//Get the current userID 
var userId = firebase.auth().currentUser.uid; 
//Get the user data 
return firebase.database().ref('/users/' + userId).once('value').then(function(snapshot) { 
    //Do something with your user data located in snapshot 
}); 

EDIT: Dodano przykład danych w obie strony

Więc kiedy jesteś zalogowany jako użytkownik Twittera: 123 dostaniesz odniesienie do lokalizacji na podstawie identyfikatora użytkownika i dostanie te dane:

"twitter:123": { 
      "username": "twitter", 
      "email": "Andrew Lee" 
     } 
+0

Tak, Andre. Dzięki. Teraz wyobraź sobie, że użytkownicy z powyższego kodu to baza danych, w której różne osoby zewnętrzne (np. "Simplelogin: 123", "twitter: 123" itp.) Tworzą swoje konta, w jaki sposób każda osoba zewnętrzna może uzyskać własne dane? – DIPXOID

+0

To już dzieje się w ostatniej części mojego przykładu, **. Child (authData.uid) ** czyni odniesienie do firebase używając swojego unikalnego identyfikatora użytkownika (simplelogin: 213, twitter: 123, ....) –

+0

Just dodane do mojej odpowiedzi pokazujące dane zwrotne –

-2

kątowego 1 o angularfire kodu

kontrolera:

var ref = firebase.database().ref().child("users/" + firebase.auth().currentUser.uid); 

var syncUserObject = $firebaseObject(ref); 
syncUserObject.$bindTo($scope, "data"); 
Widok

html:

<input type="text" ng-model="data.username"/> 
<!-- all changes from our Firebase database magically appear here! --> 
<p>You said: {{ data.username }}</p> 

Stwarza to bardzo ładny trójdrożny wiązania danych!

Powiązane problemy