Angular 5 HttpClient'get'调用返回数组,如果2+结果但不是1个结果的数组

时间:2018-01-21 21:52:41

标签: arrays angular typescript

在我测试的Angular 5 Web客户端上,在对我的Java Jax-RS REST服务器的HTTP调用中,我期望将数据返回为类型数组--AlayerRecord。 (这是一个带有几个字段的简单类)。

 this.http.get<PlayerRecord[]>(this.url)
        .subscribe(data => this.onDataSuccess(data), 
                    err => this.errorHttp.set(err));

我正在使用参数来处理下面函数中的数据,该参数期望数据再次成为类型数组--PlayerRecord:

playerRst: PlayerRecord[];

private onDataSuccess (data: PlayerRecord[]) {
    this.playerRst = data;
    console.log(this.playerRst.length);
    console.log(this.playerRst[0]);
    ...
}

现在,如果结果在数组中有2个或更多元素,我确实得到了预期的数据数组,但是,如果我从服务器只获得1条记录,“数据”不再是数组和步骤在onDataSuccess函数中失败。

你能否解释一下为什么TypeScript不能将1元素数组保存为数组或者我缺少什么,以及如何解决这个问题? 谢谢。

1 个答案:

答案 0 :(得分:2)

问题可能是你的后端。

如果获取玩家记录等查询可以返回多条记录,那么即使该列表包含单个元素,您的后端也应该返回一个列表,否则由于解析了响应,您将遇到这样的问题。

有时服务调用返回单个对象并且其他时间返回一个对象列表然后使用一个对象数组来映射的角度没有任何意义。