我有我的spring-boot后端应用程序,我在其中编写了如下查询:
@Query("SELECT COUNT(*) "
+ "FROM Foo "
+ "WHERE name = :name and surname = :surname ")
Integer countByNameAndSurname(@Param("name") String name, @Param("surname") String surname);
查询和我的后端端按我的意愿工作。在我使用Angular 4构建的前端,我无法检索从后端返回的纯整数。无论我怎样尝试,我都无法解决它。
getCount() {
return this.http.get(this.actionUrl + this.param,{headers: DataService.getHeaders()})
.subscribe(response => {
console.log(response);
console.log(response.json());
this.countResult = response.json();
//return this.countResult;
return response.json();
})
}
(我也尝试给它一个返回值getCount(): number{...}
并返回我在调用中分配的变量countResult
,但没有成功。)
这是我的服务类中的方法。我尝试将它分配到公共变量this.countResult
并尝试从另一个类到达它,并返回response.json()._body;
这是我需要的纯整数。我保证通话完全正确。我不止一次测试过它。
然而,我总是得到一个Subscriber对象,里面包含一个大的东西。
我按如下方式致电该服务:
var count = this.dataService.getCountExternalCvs();
console.log(count);
当我打印count
时,它就是上面的订户obj。
我不得不使用.subscribe()
因为我不希望响应成为Promise,我需要它的值。
这是响应和response.json()我在我的服务调用中打印,以及我在var count = this.dataService.getCountExternalCvs();
到达的订阅者对象
无论我尝试了什么,我都无法摆脱Subscriber obj并找回真实的回复。
答案 0 :(得分:3)
您需要从服务
返回以下ObservablegetCount():Observable<any> {
//service code with MAP to return the json object
}
在您的组件类中,调用方法
getCountFromService(){
service.getCount().subscribe((data)=>this.countResult =data)
}
并在HTML标记中使用countResult来显示计数。