J'ai mes nœuds dans Firebase en tant que:
users--- | uid--- | phone: name:
Je recherche l'implémentation IN
ici. Je veux vérifier quelles entrées d'une liste de numéros de téléphone sont présentes dans ma base de données, puis récupérer ces entrées.
Dans les bases de données SQL, une requête équivalente peut être:
sélectionnez le téléphone parmi les utilisateurs où le téléphone IN ('phone1', 'phone2', 'phone3', ...)
Comment puis-je réaliser cela dans mon projet Android Firebase?
3 Réponses :
Il n'existe aucun moyen de répliquer la requête SQL suivante:
select phone from users where phone IN ('phone1','phone2','phone3',...)
dans une requête de base de données en temps réel Firebase. Ce que vous pouvez à la place, c'est interroger la base de données pour chaque numéro de téléphone séparément et collecter les résultats côté client.
Si vous envisagez à un moment donné d'essayer d'utiliser Cloud Firestore , vous pouvez appeler get () méthode sur chaque Query et vous verrez qu'il renverra un Task objet qu'il sera résolu lorsque le document sera prêt. Après cela, rassemblez simplement toutes les tâches dans une liste de tâches et transmettez cette liste à whenAllComplete () méthode pour répondre lorsque l'ensemble des tâches est terminé. Vous pouvez ensuite vérifier les résultats de toutes les tâches et prendre certaines mesures en conséquence.
Comme le dit Alex, vous ne pouvez pas rechercher une liste de téléphones, à la place, vous pouvez simplement en rechercher un avec equalsTo()
Voir Interroger des données
https://firebase.google.com/docs/database/admin / retrieve-data
Sur Firestore, vous pouvez faire une clause where, vous n'avez pas besoin de spécifier des entrées individuelles:
var citiesRef = db.collection("cities"); var query = citiesRef.where("phone", "==", "phone1")
Voir: