【发布时间】:2020-10-15 05:27:10
【问题描述】:
我正在使用以下代码来读取和填充我的地图。但是即使在对代码应用承诺之后,表格数据也会被乱序读取。因此交换了 2 个键数据(键是工作表名称)。
异步函数 getSheetRows(sheetIndexMap, file) {
let sheetRowsMap = {};
const promises = sheetIndexMap.map(async (sheet) => {
return {
sheetName: sheet.name,
sheetRows: await readXlsxFile(file, { sheet:sheet.name})
}
})
const sheetRowsByResources = await Promise.all(promises);
sheetRowsByResources.forEach (sheetRowsByResource => {
sheetRowsMap[sheetRowsByResource.sheetName] = sheetRowsByResource.sheetRows
})
return sheetRowsMap
}
async function getResourceDataMap(stationCode, event) {
let file = event.target.files[0];
let sheetIndexMap = await readXlsxFile(file, { getSheets : true} );
let resourceDataMap = {};
const sheetRowsMap = await getSheetRows(sheetIndexMap, file);
/*
Consider all the sheets
*/
Object.keys(sheetRowsMap).map((sheetName) => {
if(isSheetNameValid(sheetName)) {
console.log("Entered for sheetName::" + sheetName);
let sheetRows = sheetRowsMap[sheetName];
console.log("sheet Rows for:::::" +sheetName + " are " + sheetRows.length);
if (sheetRows != null && sheetRows.length > 1) { // we need atleast two rows
let headers = sheetRows[0];
console.log("header obtained is:" +headers);
if(isColumnNamesValid(sheetName, headers)) {
let sheetMapList = getSheetMap(sheetRows);
console.log("SheetMapList obtained is:" + sheetMapList);
// STEP : Create a map of the various sheets (corresponding to each resource type)
console.log("SheetName here is::::::::" +sheetName);
resourceDataMap[sheetName] = {
headerRows: headers,
sheetMapList : sheetMapList
};
console.log("Resource data Map within :" + resourceDataMap["PRE_STAGING_AREA"]);
}
}
}
})
return resourceDataMap;
}
请帮忙!!!!
【问题讨论】:
-
问题在于 read-excel-file 节点插件版本
标签: node.js reactjs asynchronous async-await