我发现我所有的请求-承诺.catch()
方法在我的应用程序中都使用相同的逻辑。所以,我想写一个可维护的函数,如下所示:
var handleError = function (error) {
if (error.statusCode == 401) {
res.json({
'message': 'You're no longer logged in. Please check your settings and try again.'
});
} else {
res.json({
'message': 'Something when wrong and it wasn't your fault. Please try again.'
});
}
};
router.get('/test', function(req, res, next) {
request({
uri: 'http://google.com/404'
}).then(function () {
console.log('It worked!');
}).catch(handleError);
});
尽管这不起作用,因为handleError()
函数无法访问 ExpressJS 的响应对象。如何将 JSON 返回到页面并仍然从一个函数维护所有内容?
在这种情况下,最好编写一个中间件来处理它。
或者,您可以绑定res
对象,但同样,您必须在任何地方绑定它才能使用。
您可以在其主页上了解有关快速中间件的更多信息
另请参阅express-promise
包