возникли проблемы с цепочкой нескольких запросов - PullRequest
0 голосов
/ 19 мая 2019

Хорошо, я пытаюсь сделать так, чтобы запрос axios.get () извлекал определенные данные, а затем использовал этот идентификатор, чтобы получить его в виде строкового литерала, чтобы я мог выполнить второй запрос. Я продолжаю получать Информация не определена.

axios
  .get(
    `https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`
  )
  .then(response => {
    info = response.data.id;
  })
  .then(
    axios.get(
      `https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`
    )
  )
  .then(response => {
    summoner = response.data;
    return summoner;
  });
let getSummonerId = (req, res) => {
  res.status(200).send(summoner);
};
module.exports = {
  getSummonerId
};

Ответы [ 2 ]

3 голосов
/ 19 мая 2019

Исправьте цепочку:

axios
  .get(
    `https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`
  )
  .then(response => {
    return response.data.id;
  })
  .then(info => {
    return axios.get(
      `https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`
    )
  })
  .then(response => {
    summoner = response.data;
    return summoner;
  });

Лично я рекомендую асинхронную работу для таких задач, как эта.Облегчает работу с обещаниями:

let fetchSummoner = async() => {
    const res = await axios.get(`https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`);

    const info = res.data.id;

    const res2 = await axios.get(`https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`);

    const summoner = res2.data;

    return summoner;
}
0 голосов
/ 19 мая 2019

В текущем коде вы не добавили оператор возврата во 2-м запросе аксиоса.В противном случае это не приведет к извлечению и возврату 2-го URL.Пожалуйста, попробуйте следующий код.

axios
  .get(
    `https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`
  )
  .then(response => {
    return response.data.id;
  })
  .then(info => {
    return axios.get(
      `https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`
    )
  })
  .then(response => {
    summoner = response.data;
    return summoner;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...