我正在使用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));
}
};
如果按照上述方法操作,我将无法捕获错误并发送响应。
答案 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))