通过回调传递多个错误消息?

时间:2015-12-07 20:25:28

标签: javascript node.js error-handling callback

我正在使用the got library发出一些http请求。典型的got请求如下所示:

got.post(url, options, function(err, body, res) {
  ...
}

回调有错误以及正文内容和完整回复。在某些情况下,当连接到某些第三方API时,如果我收到错误响应,我发现errbody都包含重要的错误信息,我想要传回回调链:

API.prototype.makeRequest = function(callback) {
  got.post(url, {}, function(err, body, res) {

    if (err) {
      callback(err);
      return false;
    }

    // Otherwise do stuff

  });
}

// app.js    
var myAPI = new API();
myAPI.makeRequest(function(err, data){
  if (err) {
    console.log(err);
    return false;
  }

  // Do stuff...
});

所以在这个例子中,我显然只返回响应的错误。此错误的一个示例:

{ [HTTPError: Response code 400 (Bad Request)]
  message: 'Response code 400 (Bad Request)',
  code: undefined,
  host: 'api.someservice.com',
  hostname: 'api.someservice.com',
  method: 'POST',
  path: '/oauth2/token_access',
  statusCode: 400,
  statusMessage: 'Bad Request' }

但如果我检查错误请求的body,我会看到更重要且相关的错误信息:

{ error_description: 'Grant type is not supported: some_type_of_grant', error: 'unsupported_grant_type' }

所以我在errbody变量中都有有用的信息,我想要传回回调链,因为两者都很有用。

最好的方法是什么?典型的Node.js方法似乎是将单个err值作为回调中的第一个值。我应该将它们组合成一个对象还是将它们组合起来并制定我自己的错误?还有其他好方法吗?

0 个答案:

没有答案