Stupid simple Couch wrapper based on Request
JavaScript
Latest commit 76e6ad6 Sep 19, 2016 @joeybaker joeybaker committed with No infinite recursion on update (#3)
* No infinite recursion on update

* All 200s are okay on an update

* #cleanup stop leaking globals

* rm unused code #cleanup

* send real errors from couch
Permalink
Failed to load latest commit information.
README.mkd Adding some documentation. Feb 27, 2012
index.js send real errors from couch Feb 26, 2015
package.json 0.5.1 Sep 2, 2013

README.mkd

couch -- Stupid simple Couch wrapper based on Request.

Install

  npm install couch

Or from source:

  git clone git://github.com/mikeal/couch.git 
  cd couch
  npm link

Usage

var couch = require('couch')
  , c = couch('http://me.iriscouch.com/db')
  ;

c.post({'msg':'new document'}, function (e, info) {
  if (e) throw e
  c.post({'msg':'new document', _id:info.id, _rev:info.rev}, function (e, info) {
    if (e) throw e
    c.get(info.id, function (e, doc) {
      if (e) throw e
      console.log(doc) // {'msg':'new document', _id:<id>, _rev:<rev>}
    })
  })
})

Couch

  • new Couch(options) - return value from require('couch')(url)
  • Couch.get(id, cb) - get a document of the specified id
  • Couch.post(doc, cb) - write a document. MUST have _id and _rev if already exists
  • Couch.update(id, mutate, cb) - updated an existing document atomically (regardless of revision)
c.update('myid', function (doc) {doc.status = 'complete'}, function (e, info) {
 if (e) throw e
 console.log(info) // {seq:<seq>, id:<id>, rev:<rev>} 
}) 

Views

  • Couch.all(opts, cb) - Hits the /db/_all_docs API which accepts similar arguments and has a simpilar return value to views but is an index of all documents in CouchDB.
c.all({keys:['onlykey1', 'onlykey2']}, function (e, results) {
  if (e) throw e
  console.log(results.rows) // [{id:onlykey1, rev:<rev>}, {id:onlykey2, rev:<rev>}]
})
  • Couch.design(name).view(name).query(opts)
c.design('app').view('byProperty').query({key:'type', include_docs:true}, function (e, results) {
  console.log(results.rows)
})