On Apr 15, 2010, at 8:22 AM, Zachary Zolton wrote:
> 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.
>
Since most browsers are lousy at Accept headers you can also do query params like:
/db/_design/foo/_list/bam?format=xml
which provides will handle in an unsurprising way.
> 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.
>>
|