2012-04-10 19 views
2

node-mongodb-nativeを使用してローカルのMongoDBインスタンスに接続しています。私は接続を処理する方法の周りに私の頭を包んで少し問題があります。ノード/ MongoDB接続管理の処理方法は?

Database.js

var mongo = require('mongodb'); 
var Database = function() { return this; }; 

Database.prototype.doStuff = function doStuff(callback) { 
    mongo.connect('mongodb://127.0.0.1:27017/testdb', function(err, conn) { 
     conn.collection('test', function(err, coll) { 
      coll.find({}, function(err, cursor) { 
       cursor.toArray(function(err, items) { 
        conn.close(); 
        return callback(err, items); 
       }); 
      }); 
     }); 
    }); 
}; 

// Testing 
new Database().doStuff(function(err, items) { 
    console.log(err, items); 
}); 

は、新しい接続は、各メソッドのために必要である:私は、カスタムDatabaseモジュールに抽象MongoDBのものにしようとしてきましたか?それはひどく速く高価になるようです。おそらく接続がコンストラクタ内に確立され、その後の呼び出しが既存の接続を利用するだろうと想像しました。

この次の質問は設計上の疑問ですが、接続設定とティアダウンが高価な操作になる可能性があることを考慮して、アプリケーションにグローバルなデータベースオブジェクトを追加して呼び出しを行うことができますデータベースに転送します。これは妥当と思われますか?

上記コードはおおよそhereから取得しました。ご協力いただきありがとうございます。

答えて

2

メソッドごとに新しい接続は必要ありません。一度開いて以降の呼び出しに使用できます。同じことが個々のコレクション変数にも当てはまります。つまり、collection()への1回の呼び出しの結果をキャッシュすることができます。これにより、それらのコールバックが一度だけ必要になります。

関連する問題