如何导出对数据库连接的引用?

时间:2015-05-17 14:00:05

标签: javascript node.js mongodb

我使用以下代码连接到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 但它在另一个文件中最终未定义。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

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

不是尝试导出LOAD CSV连接并使其无限期打开,而是导出一个创建连接的函数并允许您使用它:

db

然后你可以像这样使用它:

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