Извлечение JSON данных из ответа Ax ios - PullRequest
0 голосов
/ 05 марта 2020

Я использую TypeScript для создания приложения Node.js и хочу получить данные JSON из внешнего API. У меня есть демо-версия кода, который я использую, не могу поднять мою фактическую базу кода.

private async getData() {
    return await Axios.get(
        `http://dummy.restapiexample.com/api/v1/employees`
    ).then(response => {
        return response.data;
    });
}

getReleaseResults() {
    this.getData().then(responseData => {
        responseData.data.data.forEach((element: any) => {
            console.log(element);
        });
    });
}

Полученное сообщение об ошибке: (узел: 6068) UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'forEach' из неопределенного в C: \ Users \ Caoilinn.Hughes \ OneDrive \ Documents \ TypeScript Демонстрации \ Azure Расширение электронной почты результатов теста \ emailAzureExtension \ app \ out \ js \ apiCaller. js: 43: 36 at processTicksAndRejected (внутренняя / process / task_queues. js: 97: 5) (узел: 6068) UnhandledPromiseRejectionWarning : Необработанное обещание отказа. Эта ошибка возникла либо из-за того, что внутри asyn c -функции не было блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI --unhandled-rejections=strict (см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (идентификатор отклонения: 1)
(узел: 6068) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания устарело. В будущем отклонения обещания, которые не обрабатываются, завершат процесс Node.js ненулевым кодом завершения.

Если у меня нет значения для каждого и заменим его на

console.log(responseData.data.data)

У меня нет проблем. К вашему сведению, результирующий набор имеет свойство data, следовательно, «data.data»

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Проблема в том, что вы уже возвращаете response.data из своей функции get, а затем снова делаете data.data, который не будет работать.

посмотрите это. Удалить лишние данные.

getReleaseResults() {
    this.getData().then(responseData => {
        responseData.data.forEach((element: any) => {
            console.log(element);
        });
    });
}
0 голосов
/ 05 марта 2020

Добавьте блок catch, чтобы получить ошибку, если она есть. Каков ожидаемый ответ? попробуйте войти.

return await Axios.get(
        `http://dummy.restapiexample.com/api/v1/employees`
    ).then(response => {
        console.log(response);
        return response.data;
    }).catch(err => console.log(err));
...