couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Zachary Zolton <zachary.zol...@gmail.com>
Subject Re: List functions and headers using send, getRow
Date Thu, 15 Apr 2010 15:22:19 GMT
You can use the provides() helper function in your list _functions:

function(head, req) {
  provides('html', function() {
    send('<html><body><ul>');
    var row;
    while (row = getRow()) {
        send('<li>' + row.id + '</li>');
    }
    return '</ul></body></html>';
  });
}

The fun part is that you can use provides() multiple times to make the
same _list function handle multiple content types (i.e. html, xml,
atom) that result from requesting the URL with different Accept
headers.

On Thu, Apr 15, 2010 at 3:17 AM, Anh <7zark7@gmail.com> wrote:
> Hi,
>
> I'm a little confused on how to set the content-type header for list
> functions which return HTML.
> I'm using the send() and getRow() functions:
>
> function(head, req) {
>    send('<html><body><ul>');
>    var row;
>    while (row = getRow()) {
>        send('<li>' + row.id + '</li>');
>    }
>    send('</ul></body></html>');
> }
>
> which works fine, but I'm not setting any content-type headers.
>
> The examples I see in the docs use return, which returns the entire
> body as well:
>
> return {
>   "headers" : {"Content-Type" : "application/xml"},
>   "body" : new XML('<xml><node foo="bar"/></xml>')
> }
>
>
> Do I have to build the whole body as a string first, and then return it?
>
> If so, that would seems to lose a benefit of list functions, that you
> can process and send each row at a time, versus eating memory.
>
>
> Thanks, any help would be appreciated.
>

Mime
View raw message