【发布时间】:2017-04-19 15:37:29
【问题描述】:
我是 express + node.js 的新手,所以我使用 mongoose 编写了一个 rest api。处理运行时错误(如数据库错误等)的最佳方法是什么?
我在 express 文档中读到,您可以使用中间件 function(err, res, req, next) 来处理此错误,并且您可以仅调用 next(err) 来调用此函数。没关系,所以想象一下,你有一个 User moongose 模型,并在控制器中编写了这个函数:
const find = (email, password) => {
User.find({ email: email }, (err, doc) => {
if (err) {
// handle error
}
return doc;
});
};
然后,您在另一个文件中有一个路由处理程序:
router.get('/users', (req, res) => {
userController.find(req.body.email);
});
所以,此时,您可以处理在模型中写入throw(err) 并在控制器中使用try/catch 然后调用next(err) 的mongo 错误,对吧?但我读过在 JavaScript 中使用 try/catch 并不是一个好习惯,因为它会创建一个新的执行上下文等。
在 Express 中处理此错误的最佳方法是什么?
【问题讨论】:
-
使用
try/catch语句没有错。就个人而言,我会采用为此类操作创建Promises的方法,以便我可以使用.catch进行错误处理。