nano-promises
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