HTTP.call抛出错误而不是返回响应

时间:2015-07-22 07:32:41

标签: meteor

我正在使用Facebook图形API,并且在处理失败的请求方面遇到了麻烦。

我使用此代码创建新帖子

SocialFacebook.createPosting = function(data) {
  var options = {
    params: {
      access_token : data.tokens.accessToken,
      message      : data.text
    }
  };

  var url      = 'https://graph.facebook.com/' + data.graphId + '/feed';
  var response = HTTP.call('POST', url, options).data;
  return response;
}

但是,不是在响应中返回带有错误信息的JS对象,而是在失败的请求上抛出错误

Exception while invoking method 'createPosting' Error: failed [500] {"error":{"message":"Duplicate status message","type":"FacebookApiException","code":506,"error_subcode":1455006,"is_transient":false,"error_user_title":"Duplicate Status Update","error_user_msg":"This status update is identical to the last one you posted. Try posting something different, or delete your previous update."}}

因为它包含在Error中,否则JSON对象现在是一个字符串,其中附加了一些其他内容,这使得难以解析和提取属性

任何关于它为什么抛出错误的想法,而不是通常返回带有错误详细信息的JS对象?

非常感谢

1 个答案:

答案 0 :(得分:0)

According to the docs,关于HTTP.call()

  

在服务器上,此功能可以同步或异步运行。如果省略回调,它将同步运行,并在请求成功完成后返回结果。如果请求不成功,则会引发错误。

所以你有它:因为你同步调用HTTP.call()(没有提供回调),如果它响应错误(在你的情况下,Code 500),则抛出错误并且不包含在数据。