繁体   English   中英

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

[英]What is the best way to open a persistent (mongo) database connection in NodeJS

我正在使用 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
    });

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

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

我的解决方案:

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

现在,而不是

db.open(function(err, client) {
    ...stuff...
});

做:

getClient(function(err, client) {
    ...stuff...
});

您的第一个 db 调用打开一个连接,其他人使用该连接。

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

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


Mongoose是在 mongodb 之上的可靠抽象,它将允许您更轻松地处理 mongodb。 值得一看。

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

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

只需将您的DB与一些帮助器/包装器功能一起放在一个模块中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM