我的服务很简单
getHotels(): Observable<any> {
return this.http.get(API_URL + '/hotels');
}
在我的组件中,我得到了
getHotels() {
this.workersService.getHotels().subscribe(
res => {
this.hotels = res;
console.log(this.hotels);
},
error => {
console.log(error);
}
);
}
并且来自console.log
的输出是
[{…}]
0: {id: 1, id_hotel: "123", client: "test", date: "17.08.2020", team: 1, …}
length: 1
__proto__: Array(0)
例如,我通过this.hotels[0].client
获得了访问权限,但我想要this.hotels.client
如何获取对象而不是对象数组?
答案 0 :(得分:0)
您正在调用的特定端点this.http.get(API_URL + '/hotels')
返回一个对象数组,因此不幸的是,即使其中只有一个对象,您也总是会收到一个数组。从技术上讲,这没有什么错,this.hotels[0].client
是处理返回一个项目列表的端点的一种完全正常/可接受的方法。
也就是说,如果必须返回一个对象,则需要通知端点本身以某种方式返回一个对象。
如果您正在调用公共API,请查看文档以查看是否:
this.http.get(API_URL + '/hotels/' + hotelId
),其中hotelId
包含特定酒店的ID this.http.get(API_URL + '/hotels', headers
),其中headers
是标头对象(有关更多信息,请参见this answer)如果您改为拥有API,则需要先实现上述方法之一,然后以相同的方式使用它。
答案 1 :(得分:0)
您的方法称为getHotels()
,您的URL以/hotels
结尾,这都意味着服务器返回了一个数组。您应该更改服务器,或将响应映射到第一项:
this.workersService.getHotels().pipe(
map((hotels) => hotels[0])
);