2015-06-18 5 views
15

Ho intenzione di creare un utente di chiamata principale che includa il nome di diversi utenti utilizzati come USERNAME. Quindi da ciascun nome utente saranno inclusi i loro dati, ad es. Nome completo, indirizzo, numero di telefono E voglio sapere come ottenere i dati di ciascun utente quando si accede al proprio profilo.Come collego ciascun utente ai propri dati in Firebase?

risposta

36

Prima di tutto ti suggerisco di passare un po 'di tempo a familiarizzare con Firebase leggendo lo Firebase Guide (Link to old Firebase Guide). Tutto ciò che devi sapere per rispondere alla tua domanda è disponibile qui. Ma per semplicità mi metterò un esempio qui:

Iniziamo con la sicurezza, qui ci sono le regole di base Firebase necessari per questo esempio: (fonte: Understanding Security) (vecchia fonte: Understanding Security)

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

I salterà la reale creazione dell'utente e l'accesso e si concentrerà sulla domanda sull'archiviazione e sul recupero dei dati dell'utente.

Mantenimento dati: (fonte: Firebase Authentication) (vecchia fonte: 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 
    }); 
} 

I dati Firebase risultante sarà simile a questa:

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

E, ultimo ma non ultimo il retreiving del dati, questo può essere fatto in diversi modi ma per questo esempio userò un semplice esempio dalla guida di Firebase: (fonte: Read and Write data) (vecchia fonte: 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: Aggiunto esempio di dati di ritorno

Così, quando si è connessi come utente di Twitter: 123 si otterrà un riferimento alla posizione, sulla base di user id e otterrà questi dati:

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

Sì, Andre. Grazie. Ora immagina che gli utenti del codice sopra riportato siano un database in cui diverse persone esterne (ad esempio "simplelogin: 123", "twitter: 123" ecc.) Creano i loro account, come può ogni persona esterna ottenere i propri dati? – DIPXOID

+0

Ciò accade già nell'ultima parte del mio esempio, **. Child (authData.uid) ** rende il riferimento al firebase utilizzando il proprio ID utente univoco (simplelogin: 213, twitter: 123, ....) –

+0

Solo aggiunto alla mia risposta che mostra i dati di ritorno –

-2

In angolare 1 con angularfire codice

regolatore:

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

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

html:

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

Questo crea un bel tre vie associazione di dati!