如何将服务的输出映射到具有 Angular 中特定值的对象?
How can i map the output from a service to an Object with specific values in Angular?
我有一个工作函数,它将服务调用的输出映射到一个对象,然后将它们映射到一个数组。
API 的响应如下:
[
{
"paper_id": "0015023cc",
"metadata": { }
"abstract": []
...
}
{
"paper_id": "0015023cc",
"metadata": { }
"abstract": []
...
}
]
papersList(): Observable<Paper[]> {
const url = `${this.allPapersUrl}/`;
return this.http
.get(url)
.pipe(
map((data: any[]) =>
data.map(
(item: any) =>
new Paper(item.paperId, item.metadata, item.paperAbstract)
)
)
);
}
如何为 returns 相同对象而不是数组的另一个服务编写函数?
新服务 API 的输出将是:
{
"paper_id": "0015023cc",
"metadata": { }
"abstract": []
...
}
我正在尝试完成的代码..
fetchPaper(pvalue: string): Observable<Paper> {
const url = `${this.paperDetailUrl}`;
params.append('paperid', pvalue);
const url = `${this.paperDetailUrl}`;
return this.http
.get(url, {params: params})
.pipe( ???
相同的运算符 map()
return this.http
.get(url, { params })
.pipe(
tap(console.log),
map(({ paperId, metadata, abstract }) => new Paper(paperId, metadata, abstract)),
);
那你就不需要循环了。另请注意,您在响应中得到 abstract
而不是
paperAbstract
return this.http
.get(url, {params: params})
.pipe(map(data:any => new Paper(data.paperId, data.metadata, data.abstract) ) )
我有一个工作函数,它将服务调用的输出映射到一个对象,然后将它们映射到一个数组。
API 的响应如下:
[
{
"paper_id": "0015023cc",
"metadata": { }
"abstract": []
...
}
{
"paper_id": "0015023cc",
"metadata": { }
"abstract": []
...
}
]
papersList(): Observable<Paper[]> {
const url = `${this.allPapersUrl}/`;
return this.http
.get(url)
.pipe(
map((data: any[]) =>
data.map(
(item: any) =>
new Paper(item.paperId, item.metadata, item.paperAbstract)
)
)
);
}
如何为 returns 相同对象而不是数组的另一个服务编写函数?
新服务 API 的输出将是:
{
"paper_id": "0015023cc",
"metadata": { }
"abstract": []
...
}
我正在尝试完成的代码..
fetchPaper(pvalue: string): Observable<Paper> {
const url = `${this.paperDetailUrl}`;
params.append('paperid', pvalue);
const url = `${this.paperDetailUrl}`;
return this.http
.get(url, {params: params})
.pipe( ???
相同的运算符 map()
return this.http
.get(url, { params })
.pipe(
tap(console.log),
map(({ paperId, metadata, abstract }) => new Paper(paperId, metadata, abstract)),
);
那你就不需要循环了。另请注意,您在响应中得到 abstract
而不是
paperAbstract
return this.http
.get(url, {params: params})
.pipe(map(data:any => new Paper(data.paperId, data.metadata, data.abstract) ) )