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

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

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

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

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

您不需要每种方法的新连接 – 您可以打开一次,然后将其用于随后的调用。 这同样适用于各个集合variables – 您可以将一次调用的结果caching到collection(),这将使您只需要这些callback一次,而将其留在其他地方。