j'essaye d'interroger une liste dans le magasin de sapins qui devrait être triée par une propriété de date décroissante et utiliser un curseur startAfter pour paginer les résultats.
Comme vous pouvez le voir dans les extraits ci-dessous, cela échoue une fois que je combine orderBy ('date', 'desc') avec startAfter (lastDoc.date).
Je me demande ce que je fais mal. Des idées?
// this actually works
// but it is sorted by ascending dates
db.collection('tanks')
.doc(tankId)
.collection('documentations')
.orderBy('date')
.startAfter(lastDoc.date)
.limit(pageSize)
.get()
// this even works...
// but has no cursor (startAfter) set for pagination
db.collection('tanks')
.doc(tankId)
.collection('documentations')
.orderBy('date', 'desc')
.limit(pageSize)
.get()
// this is what i need
// but it returns always zero results
db.collection('tanks')
.doc(tankId)
.collection('documentations')
.orderBy('date', 'desc')
.startAfter(lastDoc.date)
.limit(pageSize)
.get()
Vous devez passer l'instantané du document réel à startAfter
, pas la valeur de date:
db.collection('tanks')
.doc(tankId)
.collection('documentations')
.orderBy('date', 'desc')
.startAfter(lastDoc)
.limit(pageSize)
.get()
Cela fonctionne réellement, aucune idée pourquoi cela ne fonctionnait pas avant ...
const snapshot = lastDoc
? await Api.db.collection('tanks')
.doc(tankId)
.collection('documentations')
.orderBy('date', 'desc')
.startAfter(lastDoc.date)
.limit(pageSize)
.get()
: await Api.db.collection('tanks')
.doc(tankId)
.collection('documentations')
.orderBy('date', 'desc')
.limit(pageSize)
.get();