2016-07-10 1 views
1

J'ai une collection appelée users, il son rempli d'éléments (utilisateurs) nommés par leurs uids Firebase, ex:Comment filtrer élément par ses enfants valeur avec Firebase?

users/1k239k1293k01k923 

laisse supposer que je dois récupérer un utilisateur (ou tous les utilisateurs) qui ont le atribute provider == "facebook" .

Quelque chose comme users/$someuser/provider == "facebook"

Le problème est que je ne sais pas ce que l'utilisateur correspondront à cette atribute.

J'utilise Javascript SDK (web)

+2

Vous devez utiliser [ 'orderByChild'] (https://firebase.google.com/docs/reference/js/firebase.database.Query #orderByChild) et ['equalTo'] (https://firebase.google.com/docs/reference/js/firebase.database.Query#equalTo) –

+1

Cette [question] (http://stackoverflow.com/questions/ 37910008/check-if-value-in-firebase-db/37910159 # 37910159) vous aidera à le résoudre. – adolfosrs

Répondre

3

Le Firebase documents sont très bons, je vous conseille de faire de la lecture là.

JS:

// Provider 
var provider = "facebook"; 
// Find all users with certain provider 
var ref = firebase.database().ref("users"); 
    ref.orderByChild("provider").equalTo(provider).on("value", function(snapshot) { 
    // iterate through each match 
    snapshot.forEach(function(childSnapshot) { 
     // key will be "ada" the first time and "alan" the second time 
     var key = childSnapshot.key; 
     // childData will be the actual contents of the child 
     var childData = childSnapshot.val(); 
    }); 
}); 

C'est une combinaison de orderByChild, equalTo et forEach. Le forEach est utilisé pour parcourir chaque match et faire ce que vous voulez à partir de là.

Le .on("value" peut être changé pour .once("value, .on("child_added, etc ..

+0

merci. Cependant, je ne pense pas que Google sache comment documenter leur contenu. –