Как мне объединить результаты нескольких ответов axios.get в один массив?

1

Привет, я пытаюсь объединить результаты моего аксиос запроса на получение в один массив.

Я собираю данные из базы данных Mongoose и MongoDB, которая возвращает массив необходимой информации для выполнения запроса axios.

Я запускаю информацию через axios.get, и она возвращает меня с соответствующими результатами для каждого объекта в массиве

Увидеть ниже

const axios = require("axios");

var info = [500000, 2020, 12341234, 12341234]
var algo = "cn8"

console.log(info)


for (var i = 0; i < info.length; i++){

var url = "https://whattomine.com/coins.json?" + algo + "=true" + "&factor%5B" + algo + "_hr%5D=" + info[i]

axios.get(url)
    .then((response) => {
      var result = response.data.coins.Monero.btc_revenue
      
      console.log(result)
      })
}

Однако я также пытаюсь записать этот результат обратно в свою базу данных MongoDB/Mongoose для дальнейшей регистрации, и кто-то предложил мне использовать функцию map для запуска функций записи, возвращающихся в базу данных для нее.

Однако карта работает только для массивов, а результаты, которые я получаю от axios, - нет. У кого-нибудь есть идеи, как объединить эти ответы, которые я получаю в один массив?

Я приложил картинку ниже для справки

Имейте в виду, что это результаты для console.log(info) в ЗЕЛЕНОМ для данных, поступающих в

console.log (результат) находится в КРАСНОМ для данных, которые должны выходить (сначала нужно преобразовать в комбинированный массив, не знаю, как это сделать, когда все результаты находятся в одной переменной)

Изображение 174551

  • 0
    Моя цель состоит в том, чтобы эти четыре результата выглядели так [0.00009323, 0.5584867, 0.5584867, 0.02305736], поэтому я могу попытаться выполнить вызов функции map с помощью. Мангуста
Теги:
arrays
mongoose
axios

2 ответа

0

Вы можете использовать Promise.all, который будет возвращать ответ на все запросы, как только все они будут выполнены

const PromiseArr = [];
for (let i = 0; i < info.length; i++){

var url = "https://whattomine.com/coins.json?" + algo + "=true" + "&factor%5B" + algo + "_hr%5D=" + info[i]
  PromiseArr.push(
   axios.get(url).then(result => new Promise(resolve => resolve(result.data.coins.Monero.btc_revenue)))
  );
}

Promise.all(PromiseArr).then(res => {
    console.log(res)
});
0

Если вы можете использовать async/await, вы можете просто создать массив и добавить результаты один за другим, например, так:

const result = [];

for (let i = 0; i < info.length; i++) {
  const url = "https://whattomine.com/coins.json?" + algo + "=true" + "&factor%5B" + algo + "_hr%5D=" + info[i]
  const response = await axios.get(url);

  result.push(response.data.coins.Monero.btc_revenue);
}

console.log(response);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню