2011-08-26 30 views
5

Tôi đang cố gắng triển khai chức năng trang trước đó cho phân trang và tôi nghĩ rằng việc sử dụng tham số endkey sẽ trả về các hàng của trang trước đó, hàng cuối cùng sẽ bằng khóa kết thúc. Nhưng thậm chí có thể thực hiện truy vấn bằng cách sử dụng CHỈ tham số khóa kết thúc không có khóa khởi động không?Truy vấn CouchDB với tham số khóa kết thúc

Ví dụ:

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

Khi tôi chạy truy vấn này, quan trọng hàng cuối cùng là không bằng với endkey tôi đã chỉ định. Thay vào đó, có vẻ như CouchDB chỉ lấy 5 hàng đầu tiên trong khung nhìn và bỏ qua hoàn toàn tham số endkey.

Trả lời

5

Truy vấn có endkey nhưng không hoạt động như &startkey=null. Đó là, CouchDB sẽ bắt đầu từ khóa đầu tiên trên hàng đầu tiên và tiếp tục cho đến khi nó đạt đến endkey.

CouchDB luôn bắt đầu phản hồi từ khóa khởi động và dừng phản hồi từ giá trị limit hoặc endkey (tùy điều kiện nào đến trước).

Để tìm kiếm cuối cùng 5 hàng, bạn cần phải quét lùi (giảm dần) và sau đó khóa bắt đầu của bạn là đúng nơi bạn cần.

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

Kết quả sẽ được đảo ngược (giảm dần!). Bạn có thể đảo ngược chúng trong ứng dụng khách của bạn (nó chỉ có năm hàng) hoặc viết một hàm _list trong CouchDB để đảo ngược chúng trước khi gửi phản hồi.

+0

Tuyệt vời. Cám ơn giải thích rõ ràng. – Garrett

Các vấn đề liên quan