0.2.1 • Published 8 years ago

thunkify-mongodb v0.2.1

Weekly downloads
37
License
MIT
Repository
github
Last release
8 years ago

NPM version MIT License Build Status Test Coverage

thunkify-mongodb

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.

Installation

$ npm install thunkify-mongodb --save

Examples

Basic | Events | Bulk Operations

Basic

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

Events

All EventEmitter methods are wrapped.

You can use on and once methods as generators:

yield db.on('close');

You can also use them with a callback:

db.on('close', function() {

});

Bulk Operations

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

Supported MongoDB versions

  • All 2.X.X versions of MongoDB Native Driver are supported.

Roadmap

AggregationCursor, GridStore, Mongos, etc. coming soon. Feel free to PR.

Under the hood

thunkify-object is used as a thunk wrapper engine.

Running tests

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

License

Thunkify-mongodb is freely distributable under the terms of the MIT license.