从Angular 5中的http.get返回单个项目的Observable

时间:2019-04-02 13:46:17

标签: angular angular5 observable

我有一项将请求发送到内存网络API的服务。该服务包括一个我想查询(通过查询字符串)单个项目的API的方法。

无论在通用http.get方法中指定单个项目,我都将返回一个数组。

这与我仅返回单个项目时使用ID而不是查询使用ID调用单个项目的API的情况不同。

this.http.get<ITrack>(`api/tracks/1`)
  .subscribe(track => console.log(JSON.stringify(track)));

返回

{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}

this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
  .subscribe(track => console.log(JSON.stringify(track)));

返回

[{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}]

我可以接到第二个电话,只返回以下内容:

this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
.pipe(
  map(t => t[0])
)
.subscribe(track => console.log(JSON.stringify(track)));

但是我不能使用诸如single或first之类的方法,因为编译器希望返回的是ITrack类型。

在这里退货的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

因此,如果端点始终返回列表,请调用以get数组键入的ITrack方法。

只需将.get<ITrack>(...)替换为.get<ITrack[]>(...)

相关问题