我使用fast-csv npm包解析传入的csv文件,捕获事件data并显示row是绝对可以的。我这里有我想要的。
我所做的:
fs.createReadStream(req.file.path)
.pipe(csv.parse({ ignoreEmpty: true, trim: true }))
.on("error", (error) => console.error(error))
.on("data", (row) => console.log(row))
.on("end", (rowCount) => console.log(rowCount));我在
data活动中得到了什么:
['Data Entry Form']
['no','name','email','phone','address']
['1','John','john@gmail.com','09111111111','abc']
['2','Mary','mary@gmail.com','09111111111','abc']我需要的东西:
let data = [];
fs.createReadStream(req.file.path)
.pipe(csv.parse({ ignoreEmpty: true, trim: true }))
.on("error", (error) => console.error(error))
.on("data", (row) => data.push(_.compact(row)))
.on("end", (rowCount) => console.log(rowCount));
return res.status(201).send({
status: "success",
data,
});不好:
data是空的,我没有错误。
有什么建议吗?谢谢。
发布于 2020-07-30 16:50:00
您应该只在读取流结束时才响应,如下所示:
let data = [];
fs.createReadStream(req.file.path)
.pipe(csv.parse({ ignoreEmpty: true, trim: true }))
.on("error", (error) => console.error(error))
.on("data", (row) => data.push(_.compact(row)))
.on("end", (rowCount) => {
console.log(rowCount);
res.status(201).send({
status: "success",
data,
});
});https://stackoverflow.com/questions/63173561
复制相似问题