#javascript #node.js #axios #nestjs #rxjs-observables
#javascript #node.js #axios #nestjs #rxjs-наблюдаемые
Вопрос:
Я использую 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. Я пробовал различные наблюдаемые операторы, но, похоже, ни один из них не работает. Я знаю, что мог бы переключиться на Обещание … но я хочу использовать наблюдаемые …… любые идеи были бы высоко оценены.
Ответ №1:
Если Results
это массив, то для создания массива 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)
);
}
Комментарии:
1. Спасибо….. У меня возникли проблемы со вторым оператором map. Я заметил, что вы пропустили запятую между первой и второй картой … небольшая опечатка