如何使用NestJS重新抛出HttpService调用的错误?

时间:2019-04-09 21:33:29

标签: javascript typescript observable axios nestjs

我正在使用NestJS使用HttpService(可观察的包装式Axios库)将请求代理到另一个api。例如:

return this.httpService.post(...)
  .pipe(
    map(response => response.data),
  );

当呼叫成功时,这将正常工作;但是,如果出现错误(4xx),如何正确返回状态和错误消息?

我已经找到了如何兑现承诺的方法,但是如果可能的话,我希望保持在可观察的范围之内。

1 个答案:

答案 0 :(得分:0)

您可以使用catchError使用相应的状态码重新抛出异常:

import { catchError } from 'rxjs/operators';

this.httpService.get(url)
      .pipe(
        catchError(e => {
          throw new HttpException(e.response.data, e.response.status);
        }),
      );

请注意,error.response可能为空,请参见axios docs,以检查所有错误情况。