web-dev-qa-db-fra.com

Firebase DB - Comment mettre à jour une valeur particulière d'enfant dans la base de données Firebase

Je souhaite mettre à jour mon nom d'affichage dans le code ci-dessous. Comment puis-je mettre à jour mon nom d'affichage? Mon structer de base de données est comme ci-dessous:

 - Utilisateurs 
 -KUanJA9egwmPsJCxXpv 
 
 DisplayName: "Test Trainer" 
 
 Email: "[email protected]" 
 
 uid: "jRXMsNZHR2exqifnR2rXcceEMxF2" 
21
Nishith Adhvaryu

Si vous souhaitez mettre à jour le displayName de cet utilisateur:

var db = firebase.database();
db.ref("-Users/-KUanJA9egwmPsJCxXpv/displayName").set("New trainer");

Alternativement, vous pouvez également obtenir la même chose avec:

db.ref("-Users/-KUanJA9egwmPsJCxXpv").update({ displayName: "New trainer" });

Mais il est probable que vous ne connaissiez pas l'ID de l'utilisateur. Dans ce cas, vous devez d'abord le rechercher:

var query db.ref("-Users").orderByChild("uid").equalTo("jRXMsNZHR2exqifnR2rXcceEMxF2");
query.once("child_added", function(snapshot) {
  snapshot.ref.update({ displayName: "New trainer" })
});

Une dernière remarque sur votre structure de données: vous semblez stocker des profils d'utilisateurs, mais vous les stockez sous un Push ID. Pour ce type de structure, nous vous recommandons généralement de stocker chaque utilisateur sous son UID:

-Users
      jRXMsNZHR2exqifnR2rXcceEMxF2
         displayName:"Test Trainer"    
         email:"[email protected]"

Avec une telle structure, vous supprimez toute chance de stocker le même utilisateur deux fois. De plus, vous pouvez maintenant mettre à jour le nom d'affichage de l'utilisateur sans avoir besoin d'une requête:

var currentUser = firebase.auth().currentUser;
db.ref("-Users/"+currentUser.uid).update({ displayName: "New trainer" });
64
Frank van Puffelen