В следующем коде маршрут возвращается до заполнения массива, поэтому массив возвращается пустым.Я знаю, что что-то не так с обещаниями и / или асинхронностью и ожиданием, но я не могу понять, что это такое.
router.get('/:deckId', auth.required, (req, res) => {
Deck.findById(req.params.deckId).then(deck => {
let cardArray = []
deck.cards.forEach(card => {
const url = `https://api.scryfall.com/cards/${card.id}`
getScryFallCard(url).then(a => cardArray.push(a))
})
res.json({
name: deck.name,
id: deck._id,
cards: cardArray
})
})
})
Я попытался сделать все функции асинхронными и поставить ожидание рядом сдочерняя функция.Я пытался создать обещание, поставить ожидание рядом с этим обещанием, а затем вернуть ответ.Я попытался использовать обратный вызов для функции мангуста, а не для Promise.Я пробовал другие комбинации обещания, асинхронности, ожидания и обратного вызова, но безуспешно.Как правильно вернуть ответ после заполнения массива?
Это ответ, который я получаю.Ключ карты должен быть заполнен массивом карт.
{
"name": "Dovin",
"id": "5ca50448232aa920636dd571",
"cards": []
}