我发现我的所有request-promise .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返回到页面并仍然从一个函数维护所有内容?
答案 0 :(得分:1)
在这种情况下,最好编写一个中间件来处理它。
或者,您可以绑定res
对象,但是您必须再次绑定它以供使用。
您可以详细了解express middleware on its homepage
另请参阅express-promise
package