2012-06-09 32 views
0

我從Node.js使用Javascript MYSQL庫,然後我有多個查詢運行循環。但是當我運行循環時,the loop總是會在它開始的查詢仍在處理時突然結束(完成)。那麼如何讓循環等待每個查詢直到完成,然後繼續正常?Node.js MYSQL在上一次完成後按順序運行每個查詢?

我的代碼是:

function startHere() { 
    console.log("-- START --"); 
    for (i=1; i < 6; i++) { 
     dbInsert(i); 
    } 
    console.log("-- END --"); 
} 
function dbInsert(id) { 
    connection.query (
     'INSERT INTO table SET data=?', 
     [id], 
     function selectCb(err, results, fields) { 
      if (err) { 
       console.log(err.message); 
      } 
      if (results.length > 0) { 
       console.log(id+" RECORDS ADDED!"); 
      } 
     } 
    ); 
} 
startHere(); 

當我運行它,它總是返回類似:

-- START -- 
-- END -- 
1 RECORDS ADDED! 
2 RECORDS ADDED! 
3 RECORDS ADDED! 
4 RECORDS ADDED! 
5 RECORDS ADDED! 

這意味着,循環不等待它開始查詢結束。
我如何檢測查詢的終點並使其工作?

+0

我認爲這是一個重複這樣的:http://stackoverflow.com/questions/6638646/synchronous-mysql-in-node- js – xiaoyi

+1

首先,更熟悉「異步」代表什麼(Google是你的朋友)。其次,簽出[本頁](https://github.com/caolan/async)。 – elmigranto

回答

0

您的selectCb方法沒有被同步調用,所以您的循環可以有效地觸發每個調用,然後返回。

您可以檢查該connection.query方法的同步版本的文檔,或者您需要創建一個回調以在所有插入操作後打印結束消息。

相關問題