猫鼬查找并保存,想要将错误消息发送为res.json

时间:2019-05-04 10:55:42

标签: mongoose find save

我正在使用mvc模式设置新的api。我在向用户发送正确的回复时遇到问题。

我要更新obj,并且分两步进行操作,以便利用猫鼬验证。

更新功能是存储库模块中的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 :(得分:0)

抛出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))