如何处理Node / MongoDB连接管理?

时间:2012-04-10 16:45:26

标签: node.js mongodb

我正在使用node-mongodb-native连接到本地MongoDB实例。我在绕着如何处理连接时遇到了一些麻烦。我试图将MongoDB内容抽象为自定义Database模块:

Database.js

var mongo = require('mongodb'); 
var Database = function() { return this; };

Database.prototype.doStuff = function doStuff(callback) {
    mongo.connect('mongodb://127.0.0.1:27017/testdb', function(err, conn) {
        conn.collection('test', function(err, coll) {
            coll.find({}, function(err, cursor) {
                cursor.toArray(function(err, items) {
                    conn.close();
                    return callback(err, items);
                });
            });
        });
    });
};

// Testing
new Database().doStuff(function(err, items) {
    console.log(err, items);
});

每种方法都需要新的连接吗?这似乎会非常快速地变得昂贵。我想,也许连接将在构造函数中建立,后续调用将利用现有连接。

下一个问题可能更多的是一个设计问题,但考虑到连接设置和拆卸可能是如何昂贵的操作,我正在考虑添加一个全局的数据库对象,我的应用程序可以利用它来调用数据库。这看起来合情合理吗?

请注意,上面的代码大致取自here。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您不需要为每种方法建立新连接 - 您可以打开一次并将其用于后续调用。这同样适用于单个集合变量 - 您可以将单个调用的结果缓存到collection(),这将使您只需要一次这些回调,将它们留在其他地方。

相关问题