我想創建一個使用excelbuilder的excel工作簿並使用來自mysql數據庫的信息填充數據。這是我的get方法:異步節點JS查詢連接
app.get('/excel', function(req, res) {
var locationSpread = ['location1.xlsx', 'location2.xlsx',
'location3.xlsx'];
locationSpread.forEach(function(filename) {
fs.unlink("./Spreadsheets/" + filename, (err) => {
if (err) {
console.log('Spreadsheet ' + filename + ' not found');
} else {
console.log('Spreadsheet ' + filename + ' successfully found');
}
});
var query = connection.query('SELECT * from ' + filename.slice(0, -5), function(err, rows) {
var workbook = excelbuilder.createWorkbook('./Spreadsheets/', filename);
var sheet = workbook.createSheet(filename.slice(0, -5), 3, rows.length);
sheet.set(1, 1, 'First Name');
sheet.set(2, 1, 'Last Name');
sheet.set(3, 1, 'Company');
*** TROUBLE CODE START HERE ***
for (var j = 2, z = 0; z < rows.length; j++, z++) {
sheet.set(1, j, rows[z].firstName);
sheet.set(2, j, rows[z].lastName);
sheet.set(3, j, rows[z].company);
}
*** TROUBLE CODE END HERE ***
workbook.save(function(err) {
console.log('workbook saved ' + (err ? 'failed' : 'ok'));
});
});
});
});
我做的第一件事是,如果他們的文件夾中的電子表格存在刪除這些文件。然後我根據位置查詢數據庫。我創建一個新的工作簿和工作表,然後寫入它。 for循環打破了計劃,而錯誤是:
TypeError: Cannot read property '1' of undefined
我相信這是一起異步線的東西
你在哪裏使用異步?你確定它不是行'sheet.set(1,...'錯誤的原因嗎?你能發佈異常的調用堆棧嗎? – lilezek
錯誤可以在這裏看到:https://pastebin.com 。/ gKpBvUQx 但基本上如果我沒有在for循環中運行這些代碼,它完美 – NodeJSNoob