0
我有一个NodeJS应用程序,Express作为我的Web服务器,Mongoose作为MongoDB的抽象层。现在简单的Express路由就是这样写的。如何在Express和NodeJS中执行Mongoose错误的错误处理。
module.exports.getProfile = function(req, res, next) {
Users.findOne({
'_id': req.user._id
}).exec(function(err, profile) {
if (err) {
res.sendStatus(500);
} else if (profile) {
res.status(200).send(JSON.stringify({
'profile': profile
}));
} else {
res.status(400).send(JSON.stringify({
'message': "Profile Not found"
}));
}
});
};
现在我至少有100之类的函数,这些在我的应用程序,而不是res.sendStatus(500),每一次写作,我想创建这样一个功能。
var sendError = function(err, res, next) {
if (err) {
res.status(500).send(JSON.stringify({
'message': "Internal server error. Couldn't connect to database. Please report this issue and try again"
}));
next();
}
};
并为每个数据库调用。如果(err)sendError(err,res,next);不工作,不知何故,我觉得它是不正确的。那么这种情况下的最佳做法是什么?
Express.errorHandler是一个快速函数,因为它没有在上面给出的文档页面的链接中给出。 –
这是有关Express中错误处理工作流程的文档。 具有4个参数的函数调用错误处理程序,如果在路由中调用next()并将“err”传递给它,那么执行流将赋予此函数。 –
好吧,那么你的意思是说,如果我给下一个(犯错);在上面的函数中,而不是res.sendStatus(500);并编写一个函数'app.use(function(err,req,res,next){res.status(500).send('Something broke!');})'它会工作吗? –