couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Couchdb Wiki] Update of "Formatting with Show and List" by ChrisAnderson
Date Sun, 22 Feb 2009 02:27:19 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for change notification.

The following page has been changed by ChrisAnderson:
http://wiki.apache.org/couchdb/Formatting_with_Show_and_List

The comment on the change is:
documentation for list funs

------------------------------------------------------------------------------
  
  == Listing Views ==
  
+ List funcitons are stored under the `lists` key of design documents. Here's an example desgin
doc with list functions:
+ 
+ {{{
+ {
+ "_id" : "_design/examples",
+ "views" {
+   "posts-by-date" : "function(doc){...}",
+   "posts-by-tag" : "function(doc){...}",
+   "people-by-name" : "function(doc) {...}"
+ },
+ "lists" : {
+   "index-posts" : "function(head, row, req, row_info) {...}",
+   "browse-people" : "function(head, row, req, row_info) { ... }"
+ }
+ }}}
+ 
+ These lists are run by querying URLs like:
+ 
+ {{{
+ GET /db/_list/examples/index-posts/posts-by-date?descending=true&limit=10
+ 
+ GET /db/_list/examples/index-posts/posts-by-tag?key="howto"
+ 
+ GET /db/_list/examples/browse-people/people-by-name?startkey=["a"]&limit=10
+ 
+ }}}
+ 
+ List functions have a more interesting signature, as they are passed the head of the view
on first invocation, then each row in turn, then called once finally for the tail of the view.
They also have the ability to abort iteration early, which is handy for some filtering operations.
+ 
+ Example list function:
+ 
+ {{{
+ function(head, row, req, row_info) {
+   if (head) {
+     return "<p>head: "+JSON.stringify(head)+"</p><ul>"";
+   } else if (row) {
+     return "<li>"+JSON.stringify(row)+"</li>";
+   } else {
+     return "</ul><h4>the tail</h4>"
+   }
+ }
+ }}}
+ 
+ Hopefully that gets you enough to get started. For a more complete set of examples, see
the CouchDB test suite, especially show_documents.js and list_views.js
+ 

Mime
View raw message