Skip to content
This repository has been archived by the owner on Nov 3, 2020. It is now read-only.
/ nano-promises Public archive

make nano return promises instead of using callbacks

License

Notifications You must be signed in to change notification settings

romeovs/nano-promises

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

make nano return promises instead of using callbacks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages