我正在尝试读取 .csv 文件并使用以下代码将其分配给数组:
const fs = require("fs");
const csv = require("@fast-csv/parse");
let data = []
csv
.parseFile("./downloads/aggiornamento.csv", { skipRows: 2 })
.on("error", (error) => console.error(error))
.on("data", (row) => {
let obj = {};
obj["item_id"] = row[2];
obj["qty"] = row[20];
data.push(obj);
console.log(obj);
})
.on("end", function () {
return data;
});
Run Code Online (Sandbox Code Playgroud)
但是,读取的文件fast-csv是流,因此我只能逐行处理。我需要在第二个时刻调用一些 API 服务的完整数组,因此我想同步读取文件,追加每一行,并在最后返回数组,这样,在第二个时刻,我可以包装上一个在函数中编写代码,并以如下方式获取数组:
const data = readCSVSynchronously()
我怎样才能做到这一点fast-csv?
我正在使用fast-csv读取我的 csv 文件,但它给了我这样的错误
UnhandledPromiseRejectionWarning: TypeError: csv.fromPath is not a function
这是我的代码:
const fileRows = [];
console.log("req.file.path",req.file.path)
// open uploaded file
csv.fromPath(req.file.path)
.on("data", function (data) {
fileRows.push(data); // push each row
})
.on("end", function () {
console.log(fileRows);
//fs.unlinkSync(req.file.path); // remove temp file
const validationError = validateCsvData(fileRows);
if (validationError) {
return res.status(403).json({ error: validationError });
}
//else process "fileRows" and respond
return res.json({ message: "valid csv" })
})
Run Code Online (Sandbox Code Playgroud)