El CouchDB HTTP View API da un amplio margen para hacer la paginación de manera eficiente .
El método más simple usaría startkey
y count
. Count es la cantidad máxima de entradas que CouchDB devolverá para esa solicitud de vista, algo que depende de su diseño, y la tecla de inicio es donde desea que inicie CouchDB. Cuando solicite la vista, también le indicará cuántas entradas hay, lo que le permitirá calcular cuántas páginas habrá si desea mostrarlas a los usuarios.
De modo que la primera solicitud no especificaría una clave de inicio, solo el recuento de la cantidad de entradas que desea mostrar. Luego puede anotar la clave de la última entrada devuelta y usarla como la tecla de inicio para la página siguiente. En esta forma simple, obtendrá una superposición, donde la última entrada de una página es la primera de la siguiente. Si esto no es deseable, es trivial simplemente no mostrar la última entrada de la página.
Un método más simple de hacer esto es usar el parámetro de omisión para calcular el documento inicial de la página; sin embargo, este método debe usarse con precaución. El parámetro de omisión simplemente hace que el motor interno no devuelva las entradas sobre las que se está iterando. Si bien esto proporciona el comportamiento deseado, es mucho más lento que encontrar el primer documento para la página por clave. Cuantos más documentos se salten, más lenta será la solicitud.
El problema con este enfoque es que realmente no puede hacer clic en anteriores varias veces, solo una vez. O bien tiene que indexar manualmente TODOS los posibles primero en la página cuando vaya a las páginas siguientes o solo puede retroceder 1 página y luego no tiene ninguna información para ir a otra página anterior. – for3st
Para aquellos que tropiezan aquí y también se encuentran con el dilema de @ for3st, las características naturales de una matriz ayudan a remediar este problema. Con 'push()' ing la página anterior, inicie '_id' en la matriz y puede' pop() 'fácilmente la matriz' _id' cuando haga clic en previous. Como mucho, todo lo que tienes que hacer es realizar un seguimiento de una matriz de enteros. – wootencl