CouchDB HTTP View API daje wiele możliwości, aby zrobić stronicowania efektywne .
Najprostszą metodą byłoby użycie startkey
i count
. Liczba to maksymalna liczba pozycji CouchDB zwróci dla tego żądania widoku, coś, co należy do twojego projektu, a klucz startowy to miejsce, w którym chcesz uruchomić CouchDB. Gdy poprosisz o widok, pokaże Ci również, ile wpisów istnieje, pozwalając obliczyć, ile stron będzie tam, jeśli chcesz pokazać to użytkownikom.
Tak więc pierwsze żądanie nie określało klucza startowego, a jedynie liczbę wpisów, które chcesz wyświetlić. Następnie możesz zanotować klucz ostatniego zwróconego zwrotu i użyć go jako klawisza startowego dla następnej strony. W tej prostej formie uzyskasz nakładkę, w której ostatni wpis jednej strony jest pierwszym z następnego. Jeśli nie jest to pożądane, po prostu nie należy wyświetlać ostatniego wpisu strony.
Prostszym sposobem jest użycie parametru pominięcia do opracowania dokumentu początkowego dla strony, jednak należy ostrożnie stosować tę metodę. Parametr pominięcia powoduje po prostu, że wewnętrzny silnik nie zwraca zwracanych pozycji, które iteruje. Chociaż daje to pożądane zachowanie, jest znacznie wolniejsze niż znalezienie pierwszego dokumentu dla strony według klucza. Im więcej dokumentów zostanie pominiętych, tym wolniejsze będzie żądanie.
Problem z tym podejściem polega na tym, że nie można tak naprawdę kliknąć poprzedniego kilka razy, tylko raz. Musisz albo ręcznie indeksować WSZYSTKIE możliwe pierwsze na stronie, gdy przejdziesz do następnych stron, albo możesz wrócić tylko 1 stronę, a potem nie masz żadnych informacji, aby przejść do poprzedniej innej strony. – for3st
Dla tych, którzy potykają się tutaj, a także napotykają na dylemat @ for3st, naturalne właściwości tablicy pomagają rozwiązać ten problem. Przez 'push()' na poprzedniej stronie uruchom '_id' na tablicy możesz łatwo pop()' tablicę '_id' po kliknięciu poprzedniego. Co najwyżej wszystko, co musisz zrobić, to śledzić tablicę liczb całkowitych. – wootencl