How to combine Firestore orderBy desc with startAfter cursor

user2458046 picture user2458046 · Jan 4, 2018 · Viewed 17.3k times · Source

i am trying to query a list in firestore that should be sorted by a descending date property and make use of a startAfter cursor to paginate the results.

As you can see in the snippets below, this is failing once i combine orderBy('date', 'desc') with startAfter(lastDoc.date).

I am wondering what i am doing wrong. Any ideas?

Answer

Frank van Puffelen picture Frank van Puffelen · Jan 4, 2018

You need to pass the actual document snapshot to startAfter, not the date value:

db.collection('tanks')
  .doc(tankId)
  .collection('documentations')
  .orderBy('date', 'desc')
  .startAfter(lastDoc)
  .limit(pageSize)
  .get()

See the reference documentation for startAfter().