Estoy usando la base de datos de Firestore para almacenar mis intercambios de criptomonedas. Como hay muchos, tengo que cargarlos usando la .limit(numberOfTrades) .
Mi consulta: const tradesRef = firebase.firestore().collection("trades").limit(15);
Dentro de mi efecto de uso:
useEffect(() => { tradesRef .where("type", "==", "fiveMinutes") .get() .then((collections) => { const tradesData = collections.docs.map((trade) => trade.data()); const lastDoc = collections.docs[collections.docs.length - 1]; setTrades(tradesData); setLastTrades(lastDoc); }); setDataLoading(false); }, [filter]);Sin embargo, necesito paginación para cargar el siguiente conjunto de operaciones. La paginación de next ya está implementada y es bastante simple. Esta es la función que estoy usando para la página siguiente:
const fetchMore = () => { tradesRef .startAfter(lastTrades) .get() .then((collections) => { const tradesData = collections.docs.map((trade) => trade.data()); const lastDoc = collections.docs[collections.docs.length - 1]; setTrades(tradesData); setLastTrades(lastDoc); }); }Ahora estoy tratando de descubrir cómo implementar una consulta de página anterior que obtenga los 12 intercambios anteriores. He investigado e implementado algunas consultas, pero ni siquiera estoy cerca de resolver el problema. Cualquier ayuda sería apreciada.
Si desea paginar hacia atrás, debe usar una combinación de:
.endBefore(firstItemOnNextPage) .limitToLast(12) Así que firstItemOnNextPage es el primer elemento en la página N+1, desde donde está paginando hacia atrás. Y luego está solicitando los últimos 12 elementos antes de ese elemento ancla.