2011-09-09 118 views
0

我使用node.js和mysql模塊編寫一個簡單的select語句。node.js響應只有一個html請求

問題是它只能響應一個請求,隨後的響應將是空的。

我使用瀏覽器第一次加載頁面,它返回一個完整的結果,但瀏覽器仍在加載。發生什麼事:

代碼:

var server = http.createServer(function (request, response) { 
     response.writeHead(200, {"Content-Type": "text/plain"}); 

     client.query('SELECT * FROM ' + tbl, 
      function selectDb(err, results, fields) { 
      if (err) { 
       throw err; 
      } 

      for (var i in results){ 
       var result = results[i]; 
       response.write(result['CUSTOMERNAME']); // Writes to the web browser the value of test then a : to seperate values 
      } 

      response.end("END RESULT"); 

      client.end(); 
      } 
    ); 

}); 

回答

2

按照節點mysql的文檔(我假設你正在使用)發現here

client.end(); 

關閉MySQL連接。

當您嘗試另一個請求時,沒有打開的連接,並且node-mysql不執行任何連接池處理或自動重新連接,它的全部由您決定。

如果您不介意在應用程序的整個生命週期內保持單個連接打開(而不是最佳設計),您可以在連接處理程序之外移動該client.end()。

否則,請創建一個小方法來檢查打開的連接或可能連接池,有關更多信息,請參閱this post