为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 fetch 中检索对象属性数组,然后将其传递给第二个 fetch 调用?

如何在 fetch 中检索对象属性数组,然后将其传递给第二个 fetch 调用?

浮云间 2021-10-29 15:04:10
我有一个依赖于 2 个端点来检索所需程序名称的组件。我有 2 个端点。第一个端点返回程序列表,它是一个对象数组。目前,它只返回 4 个程序(2 个程序 ID 为“13”,另外两个程序 ID 为“14”)。第二个端点依赖于这些程序 id,我需要以某种方式将它传递给第二个端点,避免重复,并用逗号分隔。例如:首先获取调用响应:{  "programs": [    { "id": 1, "organization": {"organizationId": 2000}, "programId": 13 },    { "id": 2, "organization": {"organizationId": 2001 }, "programId": 13 },    { "id": 22, "organization": {"organizationId": 2002 }, "programId": 14 },    { "id": 20, "organization": {"organizationId": 2000 }, "programId": 14 }  ]}第二次获取调用:api/v1/program/programlist/13,14在代码中,这是我到目前为止所做的:fetch('/api/v1/organizationrelationship/organizationprograms', {  method: 'GET',  headers: {    'Content-Type': 'application/json',  }}).then(res => res.json()).then(res => {  if(res) {    _.map(res.programs, (program, index) => {      fetch(`/api/v1/program/programlist/${program.programId}`, { // this is passing all 4 programId individually        method: 'GET',        headers: {          'Content-Type': 'application/json',        }      })      .then(res => res.json())      .then(res => {        if(res) {          console.log("res: ", res)        }      })    })  }})我正在寻找的所需工作流程:第一次 fetch 调用成功然后转到第二个 fetch 调用并在 url 中传入 programIdsapi/v1/program/programlist/13,14然后我将响应保存在组件的状态中
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

试试下面的代码片段,它应该可以解决问题。


fetch('/api/v1/organizationrelationship/organizationprograms', {

  method: 'GET',

  headers: {

    'Content-Type': 'application/json',

  }

})

.then(res => res.json())

.then(res => {

  if(res) {

    // gets all the ids from the response and make them a set to remove duplicate

    let ids = new Set(res.proprams.map( (program, index) => return program.programId));

    // convert the set into and array and the use the toString function to make them comma seperated

    let params = Array.from(ids).toString()

      fetch(`/api/v1/program/programlist/${params}`, { // this is passing all 4 programId individually

        method: 'GET',

        headers: {

          'Content-Type': 'application/json',

        }

      })

      .then(res => res.json())

      .then(res => {

        if(res) {

          //here you can now save the response to state

          console.log("res: ", res)

        }

      })

  }


})


查看完整回答
反对 回复 2021-10-29
  • 1 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信