Узел выхода из цикла перед обработкой всех ошибок - PullRequest
0 голосов
/ 08 октября 2019

Я делаю некоторую внешнюю проверку приложения узла с 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 {

    // }

  // transaction.commit();
 catch (err) {
  errors.push(err.message);
  console.log('errors', errors);
  res.render('new-book', {
    errors: errors
  })
}
});

1 Ответ

0 голосов
/ 08 октября 2019
    throw new Error(errorList);

выйдет из for, завершив тем самым метод

, не выбрасывайте его там, но за пределами for

if (errorList.length > 0) {
    throw new Error(errorList);
}
...