Изменение данных JSON после разрешения обещания в веб-части React SharePoint Framework

Я вызываю ODATA API, и результаты JSON меняются после выполнения обещания.

Блок кода:

return client
.get(apiQueryString, AadHttpClient.configurations.v1)
.then((response: HttpClientResponse) => {
    if (response.ok) {
        return response.json();
    }
    else {
        console.warn(response);
        return;
    }
})
.then((json: { value: INewBusinessProps[] }) =>{
    return json.value;
})

Если я добавлю console.info(response.json()); после строки if (response.ok), я верну данные правильно:

{first_name: "Fake", last_name: "User", user_type: "billing"}
{first_name: "Fake", last_name: "User", user_type: "originating"}
{first_name: "Fake", last_name: "User", user_type: "responsible"}

Однако, когда я добавляю console.info(json.value) после строки .then((json: { value: INewBusinessProps[] }) =>{, я получаю:

{first_name: "Fake", last_name: "User", user_type: "originating"}
{first_name: "Fake", last_name: "User", user_type: "originating"}
{first_name: "Fake", last_name: "User", user_type: "originating"}

(обратите внимание на user_type)

Запуск из браузера или скрипта дает мне правильные результаты; только после then данные портятся.

Я также подумал, что проблема может быть в типе INewBusinessProps[], поэтому я заменил его на any[], но он по-прежнему не работал.

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
52
1

Ответы 1

Нашел. Это была синтаксическая ошибка. Позже в коде я выполнял фильтрацию по user_type и имел

return person
.filter(p => p.user_type = userType)

который устанавливал user_type вместо его сравнения. Изменил на:

return person
.filter(p => p.user_type == userType)

и это работает.

Другие вопросы по теме