0.7.0 • Published 10 years ago

@getable/couch v0.7.0

Weekly downloads
2
License
Artistic-2.0
Repository
github
Last release
10 years ago

couch NPM version Build Status Dependency Status

Stupid simple Couch wrapper based on Request

Table of Contents generated with DocToc

Install

npm install couch

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)
})

Tests

Tests are in tape.

  • npm test will run the tests
  • npm run tdd will run the tests on every file change.

Developing

To publish, run npm run release -- [{patch,minor,major}]

NOTE: you might need to sudo ln -s /usr/local/bin/node /usr/bin/node to ensure node is in your path for the git hooks to work

Requirements

  • npm > 2.0.0 So that passing args to a npm script will work. npm i -g npm
  • git > 1.8.3 So that git push --follow-tags will work. brew install git

License

Artistic 2.0 © Mikeal Rogers