データベース接続を初期化し、プログラム全体でアクセスできるようにするモジュールをいつでも作成できます。例:
mongo.js
var mongodb = require('mongodb');
module.exports.init = function (callback) {
var server = new mongodb.Server("127.0.0.1", 27017, {});
new mongodb.Db('test', server, {w: 1}).open(function (error, client) {
//export the client and maybe some collections as a shortcut
module.exports.client = client;
module.exports.myCollection = new mongodb.Collection(client, 'myCollection');
callback(error);
});
};
app.js
var mongo = require('./mongo.js');
//setup express...
//initialize the db connection
mongo.init(function (error) {
if (error)
throw error;
app.listen(80); //database is initialized, ready to listen for connections
});
randomFile.js
var mongo = require('./mongo.js');
module.exports.doInsert = function () {
//use the collection object exported by mongo.js
mongo.myCollection.insert({test: 'obj'}, {safe:true}, function(err, objects) {
if (err)
console.warn(err.message);
});
};
人々がプーリングについて話していることは知っていますが、すべてのリクエストに対してmongo接続のプーリングと単一の接続のベンチマークを行った場合、実際には単一の接続の方がパフォーマンスが向上しました。確かに、これは約1年前のことですが、基本的な考え方が変わったとは思えません。すべてのリクエストは非同期であるため、同時にリクエストを行うために複数の接続が必要になるわけではありません。
MongoClientに関しては、それが彼らが奨励している新しい構文だと思います。いずれにせよ、それは本質的にクライアントです 使用するスタイルに関係なく、保持してアクセスできるようにするオブジェクト。