unhurried

コンピュータ関連ネタがほとんど、ときどき趣味も…

MongoDB Node.JS Driver コネクション管理

Java + MySQLではどのフレームワークにも当たり前にあるコネクションプールのようなコネクション管理機能ですが、Node.js + MongoDBではどのように実装するのが常套手段なのかを調べました。

ポイント

  • MongoClient.connectは1度のみ呼び出し、databaseインスタンスを再利用する。
  • コネクション管理はDriverが行ってくれて、MongoClient.connectのオプションにコネクションプール数を指定できる。

サンプルコード

  • db.js
// Keep the mongoDB connection while the application is running.
var db = null;
module.exports.initialize = co.wrap(function*() {
    db = yield MongoClient.connect("mongodb://...");
});

module.exports.getById = co.wrap(function*(id) {
var col = db.collection("collection");
    var row = yield col.findOne({_id:id});
    return row.property;
});
  • app.js
var db = require('./db');

co(function*(){
    db.initialize();
    var result = db.getById(0);
    ...
});

参考