raistrick
raistrick

Reputation: 77

Can't any CouchDB _list function to work

Struggling to get any list function to work. I've been fine with _show and _view functions, but lists don't seem to be working, or I have misunderstood what to do! (I'll admit to needing an idiot's guide!)

My design document looks like:

{
   "_id": "_design/lists",
   "_rev": "3-d22225b4a28a6ca11484723c3a37201b",
   "language": "javascript",
   "views": {
       "variants": {
           "map": "function(doc) { emit(doc.var, doc.number_of_results); }"
       }
   },
   "lists": {
       "results": "function(head, req) { var row; while(row = getRow()) {send(row.value);}}"
   }
}

When I enter http://localhost:5984/mydb/_design/lists/_view/variants I get a list of variant names, like:

...{"id":"f050ad9b9f725443cb8c4071f40583b","key":"rs1013940","value":19008},
{"id":"f050ad9b9f725443cb8c4071f40daff","key":"rs1013940","value":19008},
{"id":"f050ad9b9f725443cb8c4071f40b985","key":"rs1021188","value":10197}...

but when I enter http://localhost:5984/mydb/_design/lists/_list/results I get:

{"error":"list_error","reason":"Invalid path."}

Does anyone know what I'm doing wrong? I've tried everything I can think of and swapping the function for one from any of the online tutorials.

I'm using CouchDB version 1.0.1 on Ubuntu 12.04

Many thanks, hope someone can help!

Upvotes: 6

Views: 2377

Answers (2)

Steve Benner
Steve Benner

Reputation: 1717

I had the exact same condundrum; It wasn't easy to immediatley discern the difference in using views, shows, and lists from a beginner's perspective. In the offical docs I read this:

While Show functions are used to customize document presentation, List functions are used for same purpose, but against View functions results.

And it confused me slightly. I thought similarly that one could use a list alone to collate documents, perhaps in a nice juicy HTML coating, but I really only figured out what was going on after reading this page of the definitive guide (which is an incredible resource!)

http://guide.couchdb.org/draft/transforming.html

Like Dominic says, it should have been obvious to me based on the API :)

Upvotes: 1

Dominic Barnes
Dominic Barnes

Reputation: 28429

You need to include both a view name as well as a list name in your URL:

http://localhost:5984/:db/_design/:ddoc/_list/:list/:view

which in your case translates to:

http://localhost:5984/mydb/_design/lists/_list/results/variants

Upvotes: 15

Related Questions