繁体   English   中英

如何使用 nestjs httpservice (axios) 获取嵌套的 api 数据

[英]how to get nested api data using nestjs httpservice (axios)

我正在使用 nestjs HttpService.get 从以下 API 检索数据:

 getVehicleMake(): Observable<AxiosResponse<any>> {
   return  this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
                 .pipe(
                       map(response => response.data.Results),
                       map(obj => obj.Make_Name),
                       );
}

API 返回一个嵌套的对象数组以及其他数据。 我试图访问 Make_Name 属性数组但没有成功。 我尝试了各种可观察的运算符,但似乎都不起作用。 我知道我可以切换到 Promise...但我想使用 observables...任何想法将不胜感激。

如果Results是一个数组,那么创建Make_Name属性的数组所需Make_Name就是在Results属性上使用数组方法。 鉴于上述情况,您有两种方法可以做到这一点。

选项 1:在单个map功能中完成所有操作

getVehicleMake(): Observable<AxiosResponse<any>> {
  return  this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
    .pipe(
      map(response => response.data.Results.map(result => result.Make_Name)
    );
}

选项 2:使用两个map函数分别获取数据并正确映射

getVehicleMake(): Observable<AxiosResponse<any>> {
  return  this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
    .pipe(
      map(response => response.data.Results),
      map((results) => results.map(result => result.Make_Name)
    );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM