我想从表users中获取用户数量,并使用angular将其显示在前端部分。这是我在后端重新返回用户数量的方法:
用户报告。Java
@Query(value="SELECT COUNT(*) FROM User")
int UsersCount();
用户控制器。Java
@GetMapping("/countUsers")
@PreAuthorize("hasRole('ADMIN')")
public int CountUsers() {
return UserService.usersCount();
}
问题是我仍然无法检索结果,因为前面的数字总是得到
未定义,以下是我如何在front部分调用我的方法:
UserService.ts
CountUsers() {
return this.http.get(`${AppConstants.API_URL}`+'countUsers'); }
用户组件
public count(){
this.userService.CountUsers().subscribe(
);
当我试图显示结果时,this.count((返回未定义,而当我试图将返回类型更改为数字时,我不能在服务部分显示,这表明
类型"Observable"不可分配给类型"number">
GET
请求时,默认的responseType
是'json'
。这意味着无论您的后端返回什么,HttpClient都会尝试将其解析为json
。
将计数解析为JSON的结果可能是undefined
,正如您已经注意到的那样。
尝试提供第二个options
参数,并将responseType
设置为text
:
CountUsers(): Observable<any> {
return this.http.get(`${AppConstants.API_URL}`+'countUsers', { responseType: 'text' });
}
然后,您可以通过订阅由此产生的可观察结果来访问您的计数结果:
public userCount?: number;
ngOnInit(): void {
this.userService.CountUsers().subscribe((count) => {
this.userCount = count;
console.log(count);
});
}
通过查看文档了解更多信息。