0

我正在调用 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.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)在 line 之后添加时.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"}

(注意用户类型)

从浏览器或提琴手运行会给我正确的结果;只有在then数据变得混乱之后。

我还认为这可能是INewBusinessProps[]问题所在,所以我将其更改为any[]它仍然无法正常工作。

4

1 回答 1

0

找到了。这是一个语法错误。稍后在代码中,我按 user_type 过滤并有

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

这是设置 user_type 而不是比较它。将其更改为:

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

它有效。

于 2018-10-05T16:21:17.180 回答