У меня есть цикл for, в котором я перебираю набор из примерно 50 объектов, которые я получил от json.В каждой итерации я создаю объект и помещаю его в массив.Мое намерение состоит в том, чтобы после завершения цикла for мой массив также был завершен, и теперь я хотел бы поместить этот массив как часть объекта в коллекцию мангустов.
Проблема, конечно, заключается в том, что при записи его вСпособ синхронизации: я отправлю пустой массив в Mongo, так как он не ждет окончания цикла.То, что я делал раньше, было чем-то безобразным.Я подождал, пока я в цикле for станет array.length - 1, а затем нажал кнопку «Обработка нажатия на часть БД».Проблема здесь в том, что он очень хакерский + он не гарантирует, что я получил все результаты как итерация array.length - 1 может работать до array.length - 3 из-за асинхронной природы JS, но я не возражал против этогоназад чем.
Теперь мне нужно иметь все итерации внутри моего массива.
fetch("https://api.com/something/"
.then(r => r.json())
.then(data => {
let arrayToFill = [];
for (let i = 0; i < data.length; i++) {
let objectToFillTheArrayWith;
objectData = data[i];
// Inside the for loop I make an async call to my DB for info
Game.findOne({ "address": objectData.address })
.then(existingGame => {
if (!existingGame) {
objectToFillTheArrayWith = {
title: objectData.name,
description: objectData.description,
image: objectData.featured_image_url,
price: objectData.stats.market_cap
}
arrayToFill.push(objectToFillTheArrayWith);
}
})
.catch(err => {
next(err)
});
}
let searchObjectDocument = {
name: "Games",
results: arrayToFill
}
// As you can understand, right now the results key value is an empty array
new SearchObject(searchObjectDocument).save();
// ...
Есть ли известное и интуитивно понятное решение для этого?Что-то не очень хакерское, когда я жду, пока я получу значение array.length -1, или, может быть, даже инициирую счетчик и подожду, пока счетчик не станет равным длине массива -1 и т. Д.
Спасибо