2017-10-11 3 views
0

Je crée un clone simple, amadou apprendre Firebase et je ne suis pas sûr de savoir comment ajouter un filtre à cette requête Firebase (j'utilise GeoFire pour effectuer des recherches dans un rayon):Filtrez la requête Firebase avec un tableau?

//get closest user for next game within radius 
let center = CLLocation(latitude: latitude, longitude: longitude) 
var circleQuery = geoFire.query(at: center, withRadius: 149.0) 

var queryHandle = circleQuery?.observe(.keyEntered, with: { (key: String!, location: CLLocation!) in 
    print("Key '\(key)' entered the search area and is at location '\(location)'") 

J'ai besoin filtrer les utilisateurs que l'utilisateur actuel a déjà acceptés/rejetés. Je pourrais ajouter un tableau pour l'utilisateur actuel qui contient des utilisateurs acceptés/rejetés, mais je crains que l'itération à travers un tableau chaque fois qu'un enfant est retourné dans la requête pourrait consommer beaucoup de données.

+0

Il n'y a aucun moyen simple d'ajouter des conditions à une requête GeoFire. Vous devrez faire le filtrage des conditions supplémentaires dans votre code côté client. –

Répondre

0

Vous aurez besoin de ce tableau de correspondances/rejets. Vous pouvez potentiellement stocker un tableau à l'intérieur de l'objet utilisateur pour les rejets et les correspondances, mais vous devez utiliser les règles de sécurité de la base de données pour être sélectif sur les données que vous exposez à un utilisateur qui a une liste de correspondances./ID utilisateur rejeté.

Vous obtiendrez également des données quelque peu dupliquées, car les listes acceptées sont stockées dans les objets utilisateur des deux utilisateurs, mais c'est la nature de Firebase. Le faire de cette façon ne causera pas de raccrochements de performance ou quoi que ce soit.

Si vous deviez le faire comme je l'ai suggéré ici, lorsque vous créez votre liste de cartes utilisateur à faire glisser, vous utiliseriez simplement un caractère générique (Firebase ne prend pas en charge les caractères génériques mais leur documentation explique autour de cela) pour l'ID utilisateur, puis définissez où votre ID d'utilisateur actuel n'est pas trouvé dans le tableau des correspondances potentielles rejetées. J'ai lié les docs sur le filtrage juste comme référence.

https://firebase.google.com/docs/database/ios/lists-of-data#filtering_data