Изменение данных JSON после разрешения Promise в веб-части React SharePoint Framework - PullRequest
0 голосов
/ 05 октября 2018

Я звоню в API-интерфейс ODATA, и после выполнения обещания результаты 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.log(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.log(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[], и он все еще не работал.

1 Ответ

0 голосов
/ 05 октября 2018

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

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

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

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

и все работает.

...