NodeJS連線PostgreSQL報錯TCP.onRead
阿新 • • 發佈:2019-02-04
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(); }); }); });