2012-06-08 79 views
1

我正在使用Javascript MySQL Library from Node.js。這很好,但我無法檢測INSERT/UPDATE查詢過程的完整性(或)結束。我如何檢測它?Node.js MYSQL檢測查詢的INSERT/UPDATE完整性嗎?

例如:

function start_query() { 
    conn.query(
     'INSERT .....', 
     function(err, rows, fields) { 
      if (err) { 
       console.log("Err!"); 
      } else { 
       console.log("INSERTED!"); 
      } 
     } 
    ); 
} 
start_query(); 
console.log("QUERY DONE!"); 

當運行此,它返回:

QUERY DONE! 
INSERTED! 

該過程反向返回,我沒有檢測到查詢的結束點。
我該如何讓它工作?

回答

4

Node.js執行所有不受CPU限制的任何事情 - 例如文件操作,網絡/數據庫訪問 - 異步,這是保持它儘可能快的必要條件。

所以,你需要做的任何事情查詢在回調函數完成後應該發生:

function start_query(callback) { 
    conn.query('INSERT .....', function(err, rows, fields) { 
     if(err) { 
      console.log("Err!"); 
     } else { 
      console.log("INSERTED!"); 
     } 
     callback(); 
    }); 
} 
start_query(function() { 
    console.log("QUERY DONE!"); 
}); 
0

query是一個異步函數。僅當查詢完成時才調用function(err,rows,fields)。它是一個回調函數,由於其I/O均衡,因此在NodeJS環境中廣泛使用。您將功能註冊到事件中,當它們完成時,它們被回叫。