I am trying to implement multi query and pagination with firestore, but once I add < or > to the query the cursor not working.
//working example:
the doc id i save as propery on the doc
ref.where('category','==' 'cats').where('status', '==', 1).orderBy('id').cursor('last doc id from the returned list').limit(3)
//not working exmple:
ref.where('category','==' 'cats').where('status', '==', 1).orderBy('price').where('price', '>=', 2).where('price', '<=', 55).orderBy('id').cursor('last doc id from the returned list').limit(3)
no error returned. is it bug with firestore or on my end.
A Firestore query can only have a single range condition.
From the documentation on queries:
There has documentation at firebase on Pagination & Query and query data. We have to use the startAt() or startAfter() methods to define the start point for a query. Similarly, use the endAt() or endBefore() methods to define an end point for your query results.
Example: To get all cities with a population >= 1,000,000, ordered by population,
and to get all cities with a population <= 1,000,000, ordered by population,
So pagination should be done using this method like,
As Frank pointed out so far firestore doesn't permit combining ranges on different properties. I hope google will fix this someday, having multiple range filters seems like a pretty essential feature for any database.
Also it's a rather ugly solution, but I guess you could leave out the
.where('price', '>=', 2)
part and filter out the data afterwards on the client.