closures连接的node.js mongodb

我正在尝试在mongodb中使用node.js,并在http://howtonode.org/express-mongodb

打开连接的代码是

ArticleProvider = function(host, port) { this.db= new Db('node-mongo-blog', new Server(host, port, {auto_reconnect: true}, {})); this.db.open(function(){}); }; 

但是我看不到任何连接正在closures。 但是当我在mongo控制台上看到日志时,我可以看到连接打开,并在一段时间后closures。

连接是否自动closures? 当大量的客户端尝试访问服务器时会出现问题吗? 连接应该在哪里closures?

谢谢

图科

在该示例应用程序中,只有一个ArticleProvider对象被创build供应用程序在提供请求时共享。 该对象的构造函数打开一个数据库连接,直到应用程序终止(这是好的)将不会被closures。

所以你应该看到的是,每次启动应用程序时都会得到一个新的mongo连接,但不pipe有多less客户端访问服务器都不会有其他连接。 在你终止你的应用之后不久,你应该看到它的连接在Mongo端消失了。

node-mongodb-native为Db对象提供了一个closures的方法,当你完成调用时你可以closures你的连接。

 var that = this; this.db.open(function(){ // do db work here // close the connection that.db.close(); }); 

如果你不closures连接,事件循环会保持连接打开,并且你的进程不会退出。 如果您正在构build一个Web服务器,您的进程将不会被终止,则您不必closures连接。

可以在https://github.com/mongodb/node-mongodb-native上find更好的node-mongodb-native参考。

记得把db.close放在最后一个被执行的callback函数中,这样连接就会被打开,直到所有callback函数完成。 否则,它会给出一个错误

 /usr/local/lib/node_modules/mongodb/lib/utils.js:97 process.nextTick(function() { throw err; }); ^ Error at Error.MongoError (/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:13:17) at Server.destroy (/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:629:47) at Server.close (/usr/local/lib/node_modules/mongodb/lib/server.js:344:17) at Db.close (/usr/local/lib/node_modules/mongodb/lib/db.js:267:19)