我循環了一些目錄,然後是其中的文件。我按目錄處理這些文件,然後嘗試將處理後的結果添加到MySQL中。 我打電話給conn.query('插入查詢這裏'),它似乎繼續,但查詢永遠不會在服務器上運行。如果我告訴它只處理一個目錄並等待結束,它將運行查詢,但我不能讓它繼續將所有查詢存儲在內存中,直到腳本或節點的末尾由於內存限制而失敗。我嘗試了所有我能想到的嘗試強制排隊查詢運行但沒有運氣。節點Mysql查詢隊列,但從未執行
這裏是我的代碼
dirs.forEach(function(dir){
var data = [];
var connection = mysql.createConnection(conConfig);
files.forEach(function(file){
//do some processing on files push into data array
//creating array of objects
});
data.forEach(function(record){
connection.query('INSERT INTO TABLE SET ?', record);
});
connection.end();
});
代碼只會繼續遍歷目錄而沒有將查詢發送到MySQL的一個例子。我知道這將通過限制代碼在一個目錄上運行起作用,並且一旦處理完一個目錄,它就會使查詢不起作用,但如果讓它在所有目錄上運行,則不會。
我一直在使用MySQL的池以及沒有運氣嘗試。 pool.on('enqueue' function...
會觸發,但絕不會將其發送到服務器。
編輯: 所以我試着用bash中的for循環調用腳本來單獨調用每個dir名稱,並加載了所有記錄。我對於爲什麼在我的原始示例中永遠不會建立mysql連接感到驚訝。
你是否確認了每個循環中你的價值觀是好的?嘗試添加一個回調函數作爲'connection.query()'的第三個參數,並確保沒有錯誤。 – miken32
我有,我只是把一些基本代碼放在那裏給出一個結構的想法。如前所述,如果我只是在一個目錄上運行(不管哪一個),它每次都會起作用。但是,是的,如果有錯誤的話,會有一個錯誤的功能。 –