在NodeJS中打开持久(mongo)数据库连接的最佳方法是什么

mrw*_*ter 6 javascript mongodb node.js

我正在使用node-mongodb-native驱动程序,我正在寻找一种方法来打开持久数据库连接,而不是每次打开/关闭它.

简化的连接可能如下所示......

var DB = new mongo.Db('vows', new mongo.Server("127.0.0.1", 27017, {})),
    connection = DB.open(function(err, db) {
       // Here we have access to db
    });
Run Code Online (Sandbox Code Playgroud)

如何使我的应用程序中的任何模块都可以访问db对象?而不是必须单独打开每个模块的连接?

可以使用module.exports完成吗?还是一个全局变量?

小智 5

我的解决方案

getClient = function(cb) {
    if(typeof client !== "undefined") {
        return cb(null, client);
    } else {
        db.open(function(err, cli) {
            client = cli;
            getClient(cb);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,而不是

db.open(function(err, client) {
    ...stuff...
});
Run Code Online (Sandbox Code Playgroud)

做:

getClient(function(err, client) {
    ...stuff...
});
Run Code Online (Sandbox Code Playgroud)

您的第一个数据库调用打开一个连接,其他人使用该连接.

顺便说一句:关于检查客户端是否还活着的建议?


Ray*_*nos 1

编辑:不要使用 mongoose,使用类似mongo-col或 的东西mongo-client。然后在您的应用程序中打开一个客户端。我有./client.js导出正确打开和配置的 mongo 客户端的文件。


Mongoose是 mongodb 之上的可靠抽象,可以让您更轻松地处理 mongodb。值得一看。

不过,您真正想做的是每次使用 mongo 执行任何操作时重新打开客户端。

您不与任何其他数据库保持开放连接。

只需将您的DB代码与一些辅助/包装函数一起放入模块中即可。