how to wrap my head around a FireStore query

147 views Asked by At

I am new in Flutter - Firestore

I am learning flutter with firebase and creating a sample dating app

I have a list of users that I get in a stream and display it using List view

Firestore.instance.collection('users').snapshots()

I have learnt to filter this like so

 .where((user) => user.age < settings.agemax && user.age > settings.agemin))

and all this works.

I also have a subcollection called shortlist (list of users that current user has shortlisted) that I get using,

Firestore.instance.collection('users').document(uid).collection('shortlist').snapshots()

Now I am trying to redefine my first query GetUsers with filters based on following

  1. How do I exclude shortlisted users that I am fetching in a stream from all users stream
  2. Similarly would also need to filter out "matched users" and "Blocked / declined" users as well !

I believe my question is how do I query Users Collection and exclude records with uid's that contained in a Shortlist subcollection. I am planning to use the same logic for matches and blocked !? am I on the right track ?

also ... do I need to refetch all records when a users shortlists/matches/blocks someone, as the stream would change or is there a way to remove that one record from the listview without rebuilding, may be I should separate this question in two.

1

There are 1 answers

0
Frank van Puffelen On BEST ANSWER

If I understand correctly you are looking for the (just introduced) not-in operator, so I recommend also checking out this blog post.

I expect that this operator hasn't landed in the Flutter libraries yet, as that may take some time. I recommend checking the upcoming releases to see when it lands, or checking/filing an issue on the repo.

Until then, there's no way to exclude results from a query, so you will have to exclude the items from the stream of results in your application code.