问题描述
在下面的代码中,我想检查标头是否有效,然后停止读取流(如果有效)并将错误发送回客户端(通过我的 ErrorHandler 函数)。我在控制台中看到以下内容:
UnhandledPromiseRejectionWarning:错误:请检查您的列标题。
这是为什么?
uploadExercisesViaFile = async (
req: Request,res: Response,next: NextFunction
) => {
try {
let checker = (arr,target) => target.every((v) => arr.includes(v));
const columns = ["name","link","description"];
const results = [];
let errors: string[] = [];
const parseCSV = parseString(req.file.buffer.toString(),{
headers: true,maxRows: 5,})
.on("headers",(header) => {
if (!checker(header,columns)) {
errors.push("Please check your column headers.");
parseCSV.end();
}
})
.on("data",async (row) => {
console.log(row);
results.push(row);
})
.on("error",(error) => {
errors.push(error.message);
})
.on("end",async (rowCount) => {
// Check if errors
if (errors.length > 0) {
console.log(errors);
throw new ErrorHandler(400,errors[0]);
}
// Upload
const uploadedExercises = await Exercises.batchUploadExercise(
results.map((r) => {
return { ...r,access: req.body.access,coach: req.user.id };
})
);
res.status(200).json({ rowCount: rowCount });
return;
});
} catch (e) {
next(e);
}
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)