Мангуста найди и сохрани, хочешь отправить сообщение об ошибке как res.json - PullRequest
0 голосов
/ 04 мая 2019

Я устанавливаю новый API, используя шаблон MVC.И у меня есть проблема с отправкой правильного ответа пользователю.

Я обновляю свой объект и делаю в 2 шага, чтобы воспользоваться преимуществами проверки mongoose.

Функция обновления является def в модуле репозитория:

const update = (id, newBook) => {
  return Book.findById({_id: id}, (err, oldBook) => {
    oldBook.title = newBook.title;

    oldBook.save().catch(err => {throw new Error(err)});
  })
    .exec()
    .catch(err => err);
};

и мой модуль контроллера:

exports.update = async (req, res) => {
  const requestBody = req.body;
  let book = await BookRepository.update(req.params.book_id, requestBody);

  if (book instanceof Error) {
    res.json(new Response(false, [], book));
  } else {
    res.json(new Response(true));
  }
};

Если я делаю, как я представил выше, я не могу пойматьоб ошибке и отправьте ответ.

1 Ответ

0 голосов
/ 04 мая 2019

Бросьте err вместо того, чтобы перехватить его в функции обновления, затем перехватите его в вашем контроллере.

Используя обещание

exports.update = (req, res) => {
  const requestBody = req.body;
  BookRepository.update(req.params.book_id, requestBody)
     .exec()
     .then(doc => res.json(doc))
     .catch(err => res.json(err))
...