mongo-q

kriskowal's Q support for mongodb

npm install mongo-q
1 downloads in the last day
8 downloads in the last week
30 downloads in the last month

mongo-q

kriskowal's Q support for mongodb.

for mongoose, see mongoose-q.

WARNING!!! recent mongodb driver(>=1.9.20) is NOT fully supported. see issue #1

usage

  • to apply Q with default suffix 'Q':
var mongodb = require('mongo-q')(require('mongodb'));
// verbose way: mongoQ is unused
var mongodb = require('mongodb'),
    mongoQ = require('mongo-q')(mongodb)
// shortest way: mongodb will be loaded by mongo-q
var mongodb = require('mongo-q')();
  • use Q-applied mongodb client library:
mongodb.MongoClient.connectQ(....)
  .then(function (db) {
    return db.collectionQ('test');
  })
  .then(function (coll) {
    return coll.findQ();
  })
  .then(function (cursor) {
    return cursor.toArrayQ();
    // workaround for mongodb >= 1.9.20
    //return Q.nfcall(cursor.toArray);
  })
  .then(function (result) {
    ...
  })
  .fail(function (err) { ... })
  .done();
  • you can mix them:
mongodb.MongoClient.connectQ(....)
  .then(function (db) {
    return db.collectionQ('test');
  })
  .then(function (coll) {
    return coll.find().toArrayQ(); // <----- HERE!
    // workaround for mongodb >= 1.9.20
    //return Q.nfcall(coll.find().toArray);
  })
  .then(function (result) {
    ...
  })
  .fail(function (err) { ... })
  .done();
  • to apply Q with custom suffix/prefix:
var mongodb = require('mongodb-q')(require('mongodb'), {prefix:'promiseOf_', suffix:'_withQ'});
mongodb.MongoClient.promiseOf_connect_withQ(...)
  .then(function (db) {
    return db.promiseOf_collection_withQ(...)
  })
  .then(function (coll) {
    return coll.promiseOf_find_withQ();
  })
  .then(function (cursor) {
    return cursor.promiseOf_toArray_withQ();
  })
  .then(function (result) {
    ...
  })
  .fail(function (err) { ... })
  .done();
  • to apply Q with custom name mapper:
function customMapper(name) {
  return 'q' + name.charAt(0).toUpperCase() + name.substring(1);
}
var mongodb = require('mongodb-q')(require('mongodb'), {mapper:customMapper});
mongodb.MongoClient.qConnect(...)
  .then(function (db) { ... 
    return db.qCollection('test');
  })
  .then(function (coll) {
    return coll.qFind();
  })
  .then(function (cursor) {
    return cursor.toArray();
  })
  .then(function (result) {
    ...
  })
  .fail(function (err) { ... })
  .done();
  • to apply Q with spread:
var mongodb = require('mongo-q')(require('mongodb'), {spread:true});
...

NOTE: at this time, mongodb client library is well formed enough. 'spread' option is needless.

That's all folks!

npm loves you