Le CouchDB HTTP View API donne beaucoup de possibilités de faire la pagination efficace .
La méthode la plus simple utiliserait startkey
et count
. Count est le nombre maximum d'entrées que CouchDB retournera pour cette demande d'affichage, quelque chose qui dépend de votre conception, et startkey est l'endroit où vous voulez que CouchDB démarre. Lorsque vous demandez l'affichage, il vous indique également le nombre d'entrées disponibles, ce qui vous permet de calculer le nombre de pages que vous souhaitez afficher si vous le souhaitez.
Ainsi, la première requête ne spécifierait pas une clé de démarrage, mais seulement le nombre d'entrées que vous voulez afficher. Vous pouvez ensuite noter la clé de la dernière entrée renvoyée et l'utiliser comme clé de démarrage pour la page suivante. Dans cette forme simple, vous obtiendrez un chevauchement, où la dernière entrée d'une page est la première de la suivante. Si cela n'est pas souhaitable, il est trivial de ne pas afficher la dernière entrée de la page.
Une méthode plus simple consiste à utiliser le paramètre skip pour élaborer le document de départ de la page, mais cette méthode doit être utilisée avec précaution. Le paramètre skip fait simplement que le moteur interne ne renvoie pas les entrées qu'il parcourt. Bien que cela donne le comportement souhaité, il est beaucoup plus lent que de trouver le premier document pour la page par clé. Plus les documents ignorés sont longs, plus la demande sera lente.
Le problème avec cette approche est que vous ne pouvez pas vraiment cliquer sur les précédentes fois, une seule fois. Vous devez soit indexer manuellement TOUTES les premières pages possibles lorsque vous allez aux pages suivantes ou vous ne pouvez revenir en arrière qu'une seule page et vous n'avez alors aucune information pour passer à une autre page. – for3st
Pour ceux qui trébuchent ici et se heurtent également au dilemme @ for3st, les caractéristiques naturelles d'un tableau aident à remédier à ce problème. En poussant() la page précédente commence '_id' dans le tableau, vous pouvez facilement' pop() 'le tableau' _id' lorsque vous cliquez sur précédent. Tout ce que vous avez à faire est de suivre un tableau d'entiers. – wootencl