На самом деле вы можете запросить только 11 документов без skip
, и это именно то, что делает Футон (посмотрите журналы CouchDB).
Трюк
Обе ссылки на следующую и предыдущую страницу будут похожи: startkey
- это первый или последний элемент, с skip=1
, чтобы избежать наложения. Затем вам нужно правильно использовать параметр descending
для получения предыдущих или следующих документов.
Исполнение
Когда вы запрашиваете страницу, CouchDB отвечает одиннадцатью документами. Допустим, ключ первого - first
, а ключ последнего - last
. Ссылки на страницы будут выглядеть следующим образом:
"next": /db/_view/myview?descending=true&limit=11&startkey=last&skip=1
"back": /db/_view/myview?descending=false&limit=11&startkey=first&skip=1
Et voilà! Вам просто нужно перевернуть документы перед их отображением, когда descending
равно false
. ( «Поиск ваших данных с помощью представлений» из руководства CouchDB хорошо объясняет связь между этими параметрами и B-деревьями.)
Бонус
Вы можете легко получить docid первой или последней страницы (limit=1
и descending
true или false) и получить систему нумерации страниц, очень похожую на ту, которую вы имели бы с классической базой данных (first, last , предыдущая, следующая).