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)
- MongoDB安装程序db脚本(基于NodeJS的项目)
- 使用dynamic密钥推送到MongoDB数组
- var / log / mongodb / mongod.log从node.js打开和closures连接的无限循环
- 如何使用mongoose.connect在mongodb连接期间检查db是否存在?
- geoNear没有返回任何结果,尽pipe项目在范围内(mongoose)
- 如何在不replace现有字段的情况下更新MongoDB中的logging?
- 插入到embedded的文档
- mongoose:不把_idembedded到文件中
- Node Express MongoDB本地驱动程序 – 在哪里打开数据库连接?