如何将引用导出到数据库连接?

我使用以下代码连接到我的main.js中的数据库:

var MongoClient = require('mongodb').MongoClient; var db; MongoClient.connect(process.env.PROD_MONGODB, function(err, database) { if(err) { return console.dir(err); } db = database; }); 

后来在文件中,我可以这样做:

 db.collection('players').update({id: player.id}, {$set: {x: player.x, y: player.y}}, function(err, result) { console.log(err, result); }); 

现在我想在另一个文件中进行类似的数据库更新,但不知道如何导出连接。

我已经试过exports.db = db,并要求与var db = require('./main').db,但它结束了在其他文件中未定义。

我该怎么做?

这是在完成之前尝试使用asynchronous操作的结果的典型问题。

而不是试图导出db连接,并保持打开无限期,导出一个函数,创build一个连接,并允许您使用它:

 exports.useDb = function (f) { MongoClient.connect(process.env.PROD_MONGODB, function(err, database) { try { f(err, database); } finally { database.close(); } }); }; 

那么你可以像这样使用它:

 var useDb = require('./main').useDb; useDb(function (err, db) { db.collection('players').update({id: player.id}, {$set: {x: player.x, y: player.y}}, function(err, result) { console.log(err, result); }); });