节点在处理所有错误之前退出循环
我正在使用JS对节点应用程序进行一些前端验证。我想遍历每个字段,并传递一个错误,该错误要求该字段具有字段值。当前,如果字段为空,则会将错误传回。但是,如果多个字段为空,则仅传回第一个错误。我将如何传回每个错误?下面的代码:
app.post('/books/new', function (req, res, next) {
let transaction;
try {
errors = [];
let errorList = []
for (let i in req.body) {
if (!req.body[i]) {
errorList.push(`${[i]} is a required field`)
throw new Error(errorList);
} else {
break;
}
}
Library.create({
title: req.body.title,
author: req.body.author,
genre: req.body.genre,
year: req.body.year,
})
res.redirect('/');
}
// if (!req.body) { throw new Error(`${req.params[0]} required`) } else {
// }
// transactionmit();
catch (err) {
errors.push(err.message);
console.log('errors', errors);
res.render('new-book', {
errors: errors
})
}
});
回答如下: throw new Error(errorList);
将退出for,从而结束方法
不要把它扔在那里,但要放在外面
if (errorList.length > 0) {
throw new Error(errorList);
}