Thunkify MongoDB native driver, use it with sweet generator aftertaste
npm install thunkify-mongodb[![NPM version][npm-version-image]][npm-url]
[![MIT License][license-image]][license-url]
[![Build Status][travis-image]][travis-url]
[![Test Coverage][coveralls-image]][coveralls-url]
Installation | Examples | Supported MongoDB versions | Roadmap | Under the hood | Running tests | License
Give MongoDB native driver 2.0 a sweet generator aftertaste :lollipop:
Wrapper on MongoDB native driver to provide thunk methods, useful for generator-based flow control such as co, Koa, etc.
```
$ npm install thunkify-mongodb --save
Basic | Events | Bulk Operations
`js
var MongoClient = require('thunkify-mongodb').MongoClient;
var mongodb = require('mongodb');
function* insertSomething(url) {
var mongoClient = new MongoClient(new mongodb.MongoClient());
var db = yield mongoClient.connect(url);
var collection = yield db.collection('Documents');
yield collection.insertOne({ some: 'thing' });
yield db.close();
}
`
All EventEmitter methods are wrapped.
You can use on and once methods as generators:
`js`
yield db.on('close');
You can also use them with a callback:
`js
db.on('close', function() {
});
`
`js
var MongoClient = require('thunkify-mongodb').MongoClient;
var mongodb = require('mongodb');
function* doBulk(url) {
var mongoClient = new MongoClient(new mongodb.MongoClient());
var db = yield mongoClient.connect(url);
var collection = yield db.collection('Documents');
var batch = collection.initializeOrderedBulkOp();
batch.insert({a:1});
batch.find({a:1}).updateOne({$set: {b:1}});
batch.find({a:2}).upsert().updateOne({$set: {b:2}});
batch.insert({a:3});
batch.find({a:3}).delete({a:3});
// Execute the operations
var result = yield batch.execute();
yield db.close();
return result;
}
`
* All 2.X.X versions of MongoDB Native Driver are supported.
AggregationCursor, GridStore, Mongos, etc. coming soon. Feel free to PR.
thunkify-object is used as a thunk wrapper engine.
You need a running MongoDB instance on mongodb://localhost:27017/thunkify-mongodb-test to run all the tests.
``
$ make test
With code coverage.
```
$ make test-cov
Thunkify-mongodb is freely distributable under the terms of the MIT license.
[license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat
[license-url]: LICENSE
[npm-url]: https://npmjs.org/package/thunkify-mongodb
[npm-version-image]: http://img.shields.io/npm/v/thunkify-mongodb.svg?style=flat
[travis-url]: http://travis-ci.org/yvele/node-thunkify-mongodb
[travis-image]: http://img.shields.io/travis/yvele/node-thunkify-mongodb.svg?style=flat
[coveralls-url]: https://coveralls.io/r/yvele/node-thunkify-mongodb
[coveralls-image]: https://img.shields.io/coveralls/yvele/node-thunkify-mongodb.svg?style=flat