【问题标题】:Response with JSON on request-promise .catch() function使用 JSON 响应 request-promise .catch() 函数
【发布时间】:2024-01-18 13:40:01
【问题描述】:

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

【问题讨论】:

    标签: node.js express request promise


    【解决方案1】:

    这种情况最好写个中间件来处理。

    或者,您可以绑定 res 对象,但同样您必须在任何地方绑定它才能使用。

    您可以了解更多关于express middleware on its homepage

    另外,请参阅express-promise

    【讨论】: