node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »

nano-promises

nano-promises

Build Status Coverage Status Dependencies devDependencies license gitter

nano-promises is a lightweight wrapper around the fabulous nano driver. It provides the same features but uses promises instead of callbacks.

Example

import nano from 'nano';
import prom from 'nano-promises';
 
var db = prom(nano('http://localhost:5984')).db.use('test');
 
db.insert({ 'crazy': true }, 'rabbit')
  .then(function([body, headers]) {
    console.log(body)
  })
  .catch(function(err) {
    console.error(err);
  });
 

nano-promises promises always resolve to a value of the form [body, headers] or reject to a value of the form error. So it is important to use desructuring in the then handler of the promise.

async/await

The above example does not seem convincing to swith to a promise-based approach. nano-promises becomes very handy when used together with the async/await proposal for ES7:

var isRabbitCrazy = async function() {
  try {
    var [doc] = await db.get('rabbit');
    return doc.crazy;
  } catch(err) {
    console.log('error fetching rabbit:', err);
    throw err;
  }
};
 

I don't know about you but I find this very expressive!

Attribution

I love the nano library. It has a very good api design and there's a lot of work put into it!

The code in this repo is mostly adapted from co-nano, but with promises instead of thunks.

License

This code is licensed under the ISC license