2015-09-01 64 views
1

因爲我知道應有的非阻塞I/O理論,所有東西都應該在回調中。Nodejs和MySQL

因此,進出口困惑,例如在felixge/node-mysql

connection.connect(); 

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { 
    if (err) throw err; 

    console.log('The solution is: ', rows[0].solution); 
}); 

connection.end(); 

但我認爲是錯誤的榜樣,導致.END()連接建立之前可能發生。

可以給我一個正確的例子來連接,查詢和結束mysql連接。

connection.connect(function(err) { 
    if (err) { 
     console.error('error connecting: ' + err.stack); 
     return; 
    } 

    // As I understand every "query" should happen here 
}); 

回答

4

mysql模塊內部有一個查詢隊列,它在連接時處理。一旦調用.end(),連接將只在隊列爲空時結束。

此外,.connect()是不必要的,因爲調用.query()而斷開連接將隱式觸發連接。

2

只是下面你引用的代碼:這可以確保所有剩餘查詢發送退出包到MySQL服務器之前執行

關閉連接完成後使用結束()。