66 votes

Recherche Firebase par valeur enfant

J'ai la structure suivante sur ma base de données Firebase: base de données Firebase

Je voudrais rechercher un utilisateur par nom, nom de famille ou adresse e-mail, mais comme j'ai la clé d'utilisateur au niveau supérieur, je ne sais pas comment y parvenir. Je fais et session administrateur afin qu'il n'aurait pas accès à la clé utilisateur.

J'ai essayé:

 let usersRef = firebase.database().ref('users');
usersRef.orderByValue().on("value", function(snapshot) {
    console.log(snapshot.val());
    snapshot.forEach(function(data) {
        console.log(data.key);
    });
});
 

Mais cela rassemble tous les utilisateurs de la base de données. Des idées?

103voto

Gerard Cuadras Points 1119

Vous pouvez utiliser equalTo() de trouver un enfant par la valeur. Dans votre cas, en name:

ref.child('users').orderByChild('name').equalTo('John Doe').on("value", function(snapshot) {
    console.log(snapshot.val());
    snapshot.forEach(function(data) {
        console.log(data.key);
    });
});

Le but de l' orderByChild() est de définir quel domaine vous voulez du filtre/de la recherche. equalTo() pouvez recevoir un string, int et une valeur booléenne.

Peut être aussi utilisé avec génération automatique des touches (pushKey) trop.

Vous pouvez trouver toute la documentation ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X