在Angular应用中,我可以向JSON服务器发送HTTP GET请求并从JSON文件中检索数据。
此刻我的JobService
中有一些代码:
getJob(id: number): Observable<IJob> {
return this.httpClient.get<IJob>(`${this.baseUrl}/${id}`)
.pipe(catchError(this.handleError));
}
getJobs(): Observable<IJob[]> {
return this.httpClient.get<IJob[]>(this.baseUrl)
.pipe(catchError(this.handleError));
}
这是IJob
界面:
export interface IJob {
id: number;
title: string;
description: string;
employeeId?: number;
managerId: string;
}
这是我的component
代码,它调用上述方法:
loadExistingJobs() {
this._jobService.getJobs().subscribe(
(listJobs) => {
this.jobs = listJobs;
},
(err) => console.log(err)
);
}
getJob(id: number) {
this._jobService.getJob(id).subscribe(
(job: IJob) => {
this.editJob(job);
this.job = job;
},
(err) => console.log(err)
);
}
使用上面的代码,我能够检索所有现有的作业和基于jobId的特定作业。
现在,我需要弄清楚如何基于managerId检索所有作业。即我只想显示ManagerId = 1的作业。
有人可以告诉我要做这些吗?
我是否需要发送带有ManagerId
参数的其他GET请求,还是要过滤从getJobs
返回的数据?
答案 0 :(得分:2)
如果您需要基于 managerId 实现单独的API来获取作业,则还必须更改后端API。但是可以简单地实现如下。根据 managerId 过滤从 getJobs
API调用中获取的数据。
filteredJobs: any;
managerId: string = "1";
loadExistingJobs() {
this._jobService.getJobs().subscribe(
(listJobs) => {
this.jobs = listJobs;
this.filteredJobs = this.jobs.filter(job => job.managerId === this.managerId);
},
(err) => console.log(err)
);
}
答案 1 :(得分:2)
此问题取决于您的REST API和您的设计
如果您可以添加新的REST API,建议添加一个新的REST服务,该服务将基于“ ManagerID”(优化的解决方案)返回“作业”
如果没有,则可以通过以下方式过滤返回的列表:
loadExistingJobsByManagerId(managerId: string) {
this._jobService.getJobs().subscribe(
(listJobs) => {
this.jobs = listJobs;
this.filtered = listJobs.filter(job => job.managerId === managerId);
},
(err) => console.log(err)
);
}
答案 2 :(得分:1)
我认为这与您正在使用并存在的API更为相关。在这里您可以执行以下操作之一:
希望它会帮助您获得想法。另外,您可能想向您的项目的API开发人员咨询上述建议的API(第1页)。