使用JSON响应request-promise .catch()函数

时间:2017-02-13 01:47:19

标签: node.js express request promise

我发现我的所有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返回到页面并仍然从一个函数维护所有内容?

1 个答案:

答案 0 :(得分:1)

在这种情况下,最好编写一个中间件来处理它。

或者,您可以绑定res对象,但是您必须再次绑定它以供使用。

您可以详细了解express middleware on its homepage

另请参阅express-promise package