在请求-承诺 .catch() 函数上使用 JSON 进行响应



我发现我所有的请求-承诺.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

最新更新