Funcionalidad prevista
Me gustaría poder tener paginación en mi sitio web. La forma en que funcionaría es que los usuarios verían las primeras 10 preguntas en la página principal, luego podrían hacer clic en un botón para pasar a la siguiente página y ver las siguientes 10 preguntas. También deberían poder ir en la dirección inversa.
Método
Presumiblemente, sería mejor tener dos parámetros en mi función listenForQuestions llamados pageNumber y pageLength. pageLnegth sería el número de preguntas que se mostrarán en una página determinada y pageNumber sería el número de página real al que ir. Intenté usar startAt, pero esto no toma un valor real para limitar en lugar de limitarse a los primeros n resultados de la consulta como me gustaría.
import { getAuth } from '@firebase/auth'; import { collection, doc, getDoc, getFirestore, limit, onSnapshot, orderBy, query, where, startAt, endAt } from '@firebase/firestore'; export function listenForQuestions(options, callback) { let filters = [ where('answerAccepted', '==', false), orderBy('bounty', 'desc'), orderBy('postedTimestamp', 'desc'), ]; // filters.push(startAt(0), endAt(10)) // This doesn't seem to work??? onSnapshot( query(collection(getFirestore(), 'questions'), ...filters), (snapshot) => { callback(snapshot.docs.map((doc) => doc.data())); } ); }La paginación de Firestore no se basa en compensaciones, sino en un cursor, generalmente el último elemento de la página anterior. Recomiendo consultar la documentación de Firestore sobre la paginación con cursores o alguna de las preguntas anteriores sobre la paginación con firestore .