Planeo crear un árbol principal llamado usuarios que incluirá el nombre de diferentes usuarios como nombre de usuario. Entonces, de cada nombre de usuario se incluirán sus datos, por ejemplo, Nombre completo, Dirección, Número de teléfono.
Quiero saber cómo obtener los datos de cada usuario cuando inician sesión en su perfil.
En primer lugar, le sugiero que dedique un tiempo a familiarizarse con Firebase leyendo la Guía de Firebase ( Enlace a la antigua Guía de Firebase ). Todo lo que necesita saber para responder a su propia pregunta está disponible allí. Pero para simplificar pondré un ejemplo aquí:
Comencemos con la seguridad, estas son las reglas básicas de Firebase que necesita para este ejemplo: (fuente: Comprensión de la seguridad ) (fuente anterior: Comprensión de la seguridad )
{ "rules": { "users": { "$user_id": { ".write": "$user_id === auth.uid" } } } }Omitiré la creación del usuario real y el inicio de sesión y me centraré en la pregunta sobre el almacenamiento y la recuperación de datos del usuario.
Almacenamiento de datos: (fuente: autenticación de Firebase ) (fuente anterior: autenticación de usuario )
// 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 }); }Los datos resultantes de Firebase se verán así:
{ "users": { "simplelogin:213": { "username": "password", "email": "bobtony" }, "twitter:123": { "username": "twitter", "email": "Andrew Lee" }, "facebook:456": { "username": "facebook", "email": "James Tamplin" } } }Y por último, pero no menos importante, la recuperación de los datos, esto se puede hacer de varias maneras, pero para este ejemplo voy a usar un ejemplo simple de la guía de firebase: (fuente: Leer y escribir datos ) (fuente anterior: Recuperación de datos )
//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 });EDITAR: ejemplo agregado de datos de retorno
Entonces, cuando inicie sesión como usuario twitter: 123, obtendrá una referencia a la ubicación basada en su identificación de usuario y obtendrá estos datos:
"twitter:123": { "username": "twitter", "email": "Andrew Lee" }Aunque estoy de acuerdo con Andre acerca de establecer las reglas para una buena seguridad, manejaría los datos de manera un poco diferente. En lugar de generar la cadena, uso el método child() . Es una cuestión de preferencia personal.
Obtenga el UID y defina un objeto de datos:
let user = firebase.auth().currentUser let uid = user.uid let yourdata = { foo: 'something', bar: 'other'}Guardar los datos:
firebase.database().ref('users').child(uid).set(yourdata) .then((data) => { console.log('Saved Data', data) }) .catch((error) => { console.log('Storing Error', error) })Obtener los datos:
firebase.database().ref('users').child(uid).once('value') .then((data) => { let fetchedData = data.val() console.log('Fetched Data', fetchedData) }) .catch((error) => { console.log('Fetching Error', error) }) Tenga en cuenta que set() anulará sus datos, por lo que es posible que desee utilizar push() más adelante.