首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管道操作符内部使用RXJS的多个HTTP调用

管道操作符内部使用RXJS的多个HTTP调用
EN

Stack Overflow用户
提问于 2018-12-09 06:34:55
回答 1查看 235关注 0票数 0

我有3个API端点(候选人,空缺和面试)。

代码语言:javascript
复制
{
    "candidates": [
        {
           "id": 1,
           "name": "Serj"
        },
        {
           "id": 2,
           "name": "Alex"
        },
      ],
    "vacancies": [
        {
           "id": 1,
           "title": "Java"
        },
        {
           "id": 2,
           "title": "JS"
        },
      ],
   "interviews": [
        {
           "id": 1,
           "candidateId": 1,
           "vacancyId": 2,
           "date": "2018-12-11"
        },
        {
           "id": 2,
           "candidateId": 2,
           "vacancyId": 1,
           "date": "2018-12-11"
        },
      ]
}

首先,我按日期接受面试,并进行了一系列的面试。

代码语言:javascript
复制
const params = new HttpParams().set('date', '2018-12-11');
this.http.get('http://localhost:3000/interviews', {params}).pipe();

当我subscribe()pipe()的输出时,我想得到一系列的访谈,其中"candidateId""vacancyId"是从适当的端点获取的实际对象,candidatevacancy

因此结果(Interview[])应该如下所示:

代码语言:javascript
复制
[
  {
    "id": 1,
    "candidate": {
      "id": 1,
      "name": "Serj"
    },
    "vacancy": {
      // vacancy instance
    },
    "date": "2018-12-11"
  },
  // second interview object
]

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-09 07:56:29

如果我理解得对,那么您希望您的面试响应被过滤掉,以包含一个只包含字段candidateId和vacancyId的对象数组?

如果是这样的话,您可以使用以下方法:

代码语言:javascript
复制
this.http.get('http://localhost:3000/interviews', {params})
  .pipe(
     flatMap(item => item),
     map(({ candidates, vacancies, interviews}) => 
        interviews.map(({ id, candidateId, vacancyId, date }) => ({ 
           id,
           candidate: candidates.filter(c => c.id === candidateId)[0], 
           vacancy: vacancies.filter(v => v.id === vacancyId)[0],
           date
        })
     )),
     reduce((acc, val) => [acc, val])  
  )
  .subscribe(response => console.log(response));

已经创建了一个Stackblitz演示供您参考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53689990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档