微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NodeJS连接PostgreSQL报错TCP.onRead

NodeJS写了接口,客户端不停调用这个接口获取数据,大概每次访问到100的时候就会报个错(TCP.onRead),整个Node服务端都会奔溃。


找了半天发现原来是client.end()放置的位置不对,应该在返回数据之前,而我放在最后,根本不会调用到,所以连接数据库的客户端不断增大。


router.get('/getpoisummary',function(req,res) {
	var ptx = req.query["x"];
	var pty = req.query["y"];
	var radius = req.query["r"];
	if (radius > 5000){
		res.writeHead(200,{'Content-Type':'text/plain;charset=utf-8'});
		return res.end('{"status":"Failed","message":"radius is larger than 5000 meters"}');
	}
    <span style="white-space:pre">	</span>var constring = "";
	var client = new pg.Client(constring);	
	client.connect(function(err){
		client.query("",function(err,result){
			var rowcount = result.rowCount;
			var Nowdate = new Date();
			console.log("query succeed : " + Nowdate + ",return record num : " + rowcount);
			if (rowcount == 0) {
				res.writeHead(200,{'Content-Type':'text/plain;charset=utf-8'});
				return res.end('{"status":"Failed"}');
			}
			else
			{
				var outstr = '{"status":"ok","records":[';
				for(var ii=0; ii < rowcount; ii++) {
					var row = result.rows[ii];
					outstr +=  "";
				}
				outstr = outstr.substr(0,outstr.length - 1);
				outstr += ']}';
				res.writeHead(200,{'Content-Type':'text/plain;charset=utf-8'});
				return res.end(outstr);
			}
			client.end();
       });
    });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐