J'ai la structure suivante sur ma base de données Firebase:
Je voudrais rechercher un utilisateur par nom, nom de famille ou adresse électronique, mais comme j'ai la clé d'utilisateur du niveau ci-dessus, je ne sais pas comment y parvenir. Je suis en train de faire une session d'administrateur pour qu'il n'ait pas accès à la clé d'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 amène tous les utilisateurs de la base de données. Des idées?
Vous pouvez utiliser equalTo()
pour rechercher un enfant par valeur. Dans votre cas par 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 orderByChild()
est de définir le champ que vous voulez filtrer/rechercher. equalTo()
peut obtenir une chaîne, une valeur int et booléenne.
Peut également être utilisé avec des clés générées automatiquement (pushKey
).
Vous pouvez trouver toute la documentation ici