web-dev-qa-db-fra.com

Comment lier chaque utilisateur à ses données dans Firebase?

Je prévois de créer une arborescence principale nommée utilisateurs, qui inclura le nom des différents utilisateurs utilisés comme identifiant. Ainsi, à partir de chaque nom d'utilisateur, leurs données seront incluses, par exemple. Nom complet, adresse, numéro de téléphone.

Je veux savoir comment obtenir les données de chaque utilisateur lorsqu'il se connecte à son profil.

33
Oladipo Isola

Tout d’abord, je vous suggère de vous familiariser avec Firebase en lisant le Guide Firebase ( Lien vers l’ancien Guide Firebase ). Tout ce que vous devez savoir pour répondre à votre propre question est disponible ici. Mais pour plus de simplicité, je vais mettre un exemple ici:

Commençons par la sécurité. Voici les règles de base de Firebase dont vous avez besoin pour cet exemple: (source: comprendre la sécurité ) (ancienne source: comprendre la sécurité )

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

Je vais ignorer la création et la connexion de l'utilisateur réel et me concentrer sur la question du stockage et de la récupération des données de l'utilisateur.

Stockage des données: (source: Authentification Firebase ) (ancienne source: Authentification de l'utilisateur )

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

Les données de base de feu résultantes ressembleront à ceci:

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

Et, dernier point mais non le moindre, la récupération des données peut s’effectuer de plusieurs manières. Pour cet exemple, je vais utiliser un exemple simple tiré du guide Firebase: (source: lecture et écriture de données ) (ancienne source: récupération de données )

//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: Exemple ajouté de données de retour

Ainsi, lorsque vous êtes connecté en tant qu'utilisateur Twitter: 123, vous obtiendrez une référence à l'emplacement en fonction de votre ID utilisateur et obtiendrez ces données:

"Twitter:123": {
          "username": "Twitter",
          "email": "Andrew Lee"
        }
67
André Kool