我有一个 ASP.NET Core API,它将用户列表返回到 Angular 服务。返回的用户对象包含一些属性(id、firstName、lastName)。
我希望我的 Angular 服务从我的 API 端点检索此列表,然后查询 Microsoft Graph 以获取所有返回用户的个人资料图片。我无法找到使用 RxJs 执行此操作的正确方法。
选项的顺序应该是这样的:
我专门寻找 RxJs 运算符来使用,以便:
到目前为止,我可以从用户的 API 中检索数组:
public getEligibleContractors(): Observable<EligibleContractor[]> {
return this.http.get<ListEligibleContractorsResponse>(`${this.endpointUrl}/eligible`, { observe: 'response' }).pipe(
take(1),
map((response: HttpResponse<ListEligibleContractorsResponse>) => {
return (response.body as ListEligibleContractorsResponse).eligibleContractors
})
);
}
我现在需要获取这一系列符合条件的承包商,并为每个元素调用 Microsoft Graph。
目前,上面的工作函数返回 EligibleContractor[] 的 Observable,但这最终将被映射到 User[],即具有 id、firstName、lastName 和 profilePicture (blob) 等属性的用户数组。
我在 Reddit 上发布了类似的问题,并从那里的用户那里得到了很好的答案。正是我正在寻找的东西。在这里发帖以防它可以帮助其他人解决类似的问题:
这是 Reddit 上的帖子。
解决方案如下:
this.users$ = this.getUsers().pipe(
mergeAll(),
mergeMap((user) =>
this.getBlob(user.blobId).pipe(
map((blob) => ({ ...user, blobURL: blob.picture }))
)
),
toArray()
);