Привет, я пытаюсь объединить результаты моего аксиос запроса на получение в один массив.
Я собираю данные из базы данных 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 (результат) находится в КРАСНОМ для данных, которые должны выходить (сначала нужно преобразовать в комбинированный массив, не знаю, как это сделать, когда все результаты находятся в одной переменной)
Вы можете использовать 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)
});
Если вы можете использовать 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);