nodejs使用mongodb连接池
在开发中想使用连接池 在网上找到了一段代码 但是自己测试的时候发现了些问题 当我把setTimeout中的语句数量变成五条以上的时候 nodejs会首先执行五条 然后过一段时间才会执行剩下的 而且好像server_options的pool_size:1好像也没有奇效 不知道这个是什么问题 要怎么做修改 代码如下:
var http=require('http'),
mongodb = require("mongodb"),
poolModule = require('generic-pool');
var pool = poolModule.Pool({
name : 'mongodb',
create : function(callback) {
var server_options={'auto_reconnect':false,poolSize:1};
var db_options={w:-1};
var mongoserver = new mongodb.Server('localhost', 27017,server_options );
var db=new mongodb.Db('test', mongoserver, db_options);
db.open(function(err,db){
if(err)return callback(err);
callback(null,db);
});
},
destroy : function(db) { db.close(); },
max : 10,
idleTimeoutMillis : 30000,
log : false
});
var server=http.createServer(function(req,res){
pool.acquire(function(err, db) {
if (err) {
res.statusCode=500;
res.end(JSON.stringify(err,null,2));
} else {
db.collection('foo').save({test:1},function(err,result){
res.end(JSON.stringify(result,null,2));
pool.release(db);
});
}
});
});
server.listen(8080,function(){
console.log('server listen to %d',this.address().port);
});
setTimeout(function(){
http.get('http://localhost:8080',function(res){console.log('request ok')});
http.get('http://localhost:8080',function(res){console.log('request ok')});
},2000);
相关阅读:
JS模块加载器如何解决循环依赖问题?
怎么用逻辑右移实现算术右移?
Ajax访问IIS虚拟目录路径访问不到
普通的类文件能不能读取SharedPreferences里的数据,如何读取?
Safari打不开该网页,因为网址已经失效
假设新浪微博里的微博数据条数有数亿了,请问新浪现在想查询浏览量最高的前10条数据,如何做?
这个闭包中的尾巴上的括号是什么意思?
手机端的border问题外边框有一圈奇怪的东西
gradle wrapper 如何加入版本控制?
system.js 编译好之后 为什么浏览器Sources里 能看到我的源文件?
引用类型有Object、Array、Date、RegExp、function等,他们之间是什么关系呢?
Java 转换double为Date format string的结果不一致
使用MYO和Leap Motion替代鼠标可行吗?
国内可以直接读google存储库中的数据吗?
如何像 Grunt、Yo 那样,创建自定义命令?
我想连接远程的服务器的mysql,但是总是提示连接本地,失败?
如何看待Monkeypatching,通常情况下还有更好的方法吗?
qq分享的图标以及文案可以配置的吗?
用定时器做一个发送验证码的倒计时遇到的问题?
如何用正则表达式匹配正则表达式?