我正在尝试为分页实现上一页功能,我认为使用endkey参数将返回上一页的行,其中最后一行等于endkey。但是,甚至可以在没有startkey的情况下使用endkey参数进行查询吗?
例如:
http://something.com:5984/db3/_design/app/_view/a_view?limit=5&endkey=["ABC","6L","201112"]&descending=false
当我运行此查询时,最后一行的键不等于我指定的结束键。相反,似乎CouchDB只抓取视图中的前5行并完全忽略了endkey参数。
答案 0 :(得分:5)
使用endkey
但不是startkey
的查询将隐含地像&startkey=null
一样工作。也就是说,CouchDB将从第一行的第一个键开始,一直持续到达结束键。
CouchDB始终从其启动键开始响应,并从其limit
或endkey
值(以先到者为准)停止响应。
要获取 last 5行,您需要向后扫描(降序),然后您的启动键就在您需要的位置。
?limit=5&startkey=["ABC","6L","201112"]&descending=true
结果将按逆转(降序!)顺序排列。你可以在你的客户端中反转它们(它只有五行)或在CouchDB中写一个_list
函数来反转它们,然后再发送响应。