Я вызываю 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[], но он по-прежнему не работал.

Нашел. Это была синтаксическая ошибка. Позже в коде я выполнял фильтрацию по user_type и имел
return person
.filter(p => p.user_type = userType)
который устанавливал user_type вместо его сравнения. Изменил на:
return person
.filter(p => p.user_type == userType)
и это работает.