Как бросить исключения внутри асинхронных функций? - PullRequest
0 голосов
/ 13 сентября 2018

мой вариант использования примерно такой,

  1. Сначала я получаю путь к изображению и идентификатор ресторана из внешнего интерфейса.
  2. Затем я проверяю, есть ли в этом ресторане уже 5 изображений. Если да, я отправляю, а исключение говорит: «Извините, максимальное количество загружаемых изображений - 5».
  3. Я хочу приложить эту ошибку и к моему ответу.

Это мой код.

export async function upload_images_to_restaurant(req, res, next) {
  try {
    const data = req.swagger.params.body.value;
    console.log("Data", data);
    const restaurant_id = data.restaurant_id;

    const count = await db.restaurant_images.count({
      where: {
        restaurant_id: restaurant_id
      }
    })

    if (count >= 5) {
      throw "Sorry maxmimum number of images you can upload is 5."
    } else {
      const upload = db.restaurant_images.create(data)
    }

    console.log("Count", count)
    res.sendStatus(200);
  } catch (error) {
    console.log("Errors", error);
    res.stauts(422).json(error)
  }
}

В логе консоли блока catch выводит ошибку. Но после этого выдает ошибку

Эта ошибка возникла из-за броска внутрь асинхронной функции. без блокировки, или отклонив обещание, которое не было обработано с .catch ().

Мне интересно, почему я получаю эту ошибку, поскольку то, что я выкидываю, правильно выводится в catch block's console log.

1 Ответ

0 голосов
/ 13 сентября 2018

Потому что есть опечатка. Вы должны написать «res.status (...» вместо «res.stauts». Это исключение не обрабатывается выражением «try ... catch ...».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...