Mark Needham

Thoughts on Software Development

CouchDB: ‘badmatch’ when executing view

with one comment

I’ve been playing around with CouchDB again in my annual attempt to capture the links appearing on my twitter stream and I managed to create the following error for myself:

$ curl
{"error":"badmatch","reason":"{\n   \"find_broken_links\": {\n       \"map\": \"function(doc) {   \nvar prefix = doc.actual_link.match(/.*/);            \n  if(true) {                  emit(doc.actual_link, null);                }              }\"\n   }\n}"}

It turns out this error is because I’ve managed to create new line characters in the view while editing it inside CouchDBX. D’oh!

A better way is to edit the view in a text editor and then send it to CouchDB using curl.

The proper way to update a view would be to add a ‘_rev’ property to the body of the JSON document but I find it annoying to go and edit the document so I’ve just been deleting and then recreating my views.

$ curl -X GET
$ curl -X DELETE
$ curl -X PUT -d @cleanup.json

I guess there’s probably a library somewhere which would encapsulate all that for me but I’m just hacking around at the moment.

It’s interesting to to see how you interact differently with a document database compared to what you’d do with a relational one with respect to optimistic concurrency.

Be Sociable, Share!

Written by Mark Needham

February 12th, 2011 at 6:03 pm

Posted in CouchDB

Tagged with

  • Tim Robinson

    I don’t think I’d have survived this long without CouchApp:

    Write your design documents in a text editor (with design document fields, such as views, split out into separate files), then deploy them with “couchapp push”.