2011-08-26 6 views
5

ページネーションの前のページ機能を実装しようとしていますが、endkeyパラメータを使用すると、最後の行がエンドキーと等しい前のページの行が返されると考えました。しかし、startkeyのないendkeyパラメータだけを使ってクエリを実行することも可能ですか?例えばendkeyパラメータを持つCouchDBクエリ

http://something.com:5984/db3/_design/app/_view/a_view?limit=5&endkey=["ABC","6L","201112"]&descending=false

私はこのクエリを実行すると、最後の行のキーは、私は指定されたendkeyと同じではありません。代わりに、CouchDBはビューの最初の5行を取得し、endkeyパラメータを完全に無視するようです。

答えて

5

endkeyではなくstartkeyでないクエリは暗黙的に&startkey=nullのように動作します。つまり、CouchDBは最初の行の最初のキーから開始し、endkeyに達するまで続行します。

CouchDBは、常にその開始キーから応答を開始し、応答をそのlimitまたはendkeyの値(どちらか早い方)から停止します。

最後に 5行をフェッチするには、逆方向(降順)にスキャンする必要があります。

?limit=5&startkey=["ABC","6L","201112"]&descending=true 

結果は逆順(降順)になります。あなたはクライアントでそれを逆転させることができます(それは5行だけです)。応答を送信する前に、CouchDBで_list関数を書き換えて逆にすることができます。

+0

素晴らしい。それをクリアしていただきありがとうございます。 – Garrett

関連する問題