【问题标题】:How to handle Node/MongoDB connection management?如何处理 Node/MongoDB 连接管理?
【发布时间】:2012-04-10 16:45:26
【问题描述】:

我正在使用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。感谢您的帮助。

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多