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