アプリ全体でdb.openまたはdb.connectを呼び出したときに返されたdbオブジェクトを共有するにはどうすればよいですか?
私は次のようにdbconnect.jsモジュールを持っています:
var mongodb = require('mongodb');
var global_db = '';
// Define options. Note poolSize.
var serverOptions = {
'auto_reconnect': true,
'poolSize': 5
};
// Now create the server, passing our options.
var serv = new mongodb.Server('localhost', 27017, serverOptions);
// At this point, there is no connection made to the server.
// Create a handle to the Mongo database called 'myDB'.
var dbManager = new mongodb.Db('myDB', serv);
// NOW we initialize ALL 5 connections:
dbManager.open(function (error, db) {
// Do something with the connection.
global_db = db;
// Make sure to call db.close() when ALL connections need
// to be shut down.
db.close();
});
function getConnection()
{
return global_db;
}
exports.getConnection = getConnection;
そして私は私のapp.jsでこのdbconnect.jsを次のように使用しています:
var http = require('http');
var db = require('./dbconnect').getConnection();
var collection = db.collection('testcollection');
console.log(db);
console.log(collection);
var server = http.createServer();
server.on('request',route);
server.listen(8000,'127.0.0.1');
console.log('Server running at http://127.0.0.1:8000');
function route(request,response)
{
var url = request.url;
var doc = {};
doc[url] = 'ok';
collection.insert(doc,{w:1},function(err,result)
{
if(err) console.log(err);
else console.log(result);
});
}
コンソールでは、db変数とcollection変数に空の値が表示されます。また、dbconnect.jsでdb.close()呼び出しを削除しようとしましたが、役に立たなかったのですが、dbManagerのdbconnect.jsファイル内に配置すると挿入は機能します。オープン関数、これを行うにはどうすればよいですか?または同様の代替手段はありますか?