Я довольно новичок в веб-разработке и с трудом понимаю правильный путь.Я хочу, чтобы маршрут вызывал API, затем вставлял данные из API в мою базу данных mongo и затем рендерил этот результат в шаблон handlebars.Я не понимаю обещаний.Код ниже:
Код запускает вызов API, возвращает данные и даже вставляет в БД, но не будет отображать шаблон после (у меня изначально был его рендеринг с ответом API, но я хочу подключить идентификатор БДкогда он отображает шаблон).Я уверен, что это как-то связано с обещаниями.Я попытался с обратными вызовами безуспешно, поэтому попытался с функциями асинхронного / ожидания, и это, похоже, тоже не работает.Опять же, у меня все еще есть проблемы с несколькими обратными вызовами, поэтому я пытался что-то еще.
Код запускает вызов API, возвращает данные и даже вставляет в БД, но не будет отображать шаблон после (у меня изначально был его рендеринг с ответом API, но я хочу, чтобы при рендеринге был присоединен идентификатор БДк шаблону).Я уверен, что это как-то связано с обещаниями.Я попытался с обратными вызовами безуспешно, поэтому попытался с функциями асинхронного / ожидания, и это, похоже, тоже не работает.Опять же, у меня все еще есть проблемы с несколькими обратными вызовами, поэтому я пытался что-то еще.
async function getRecipeData(param) {
let res = await axios.get("https://api.edamam.com/search?q=" + param + "&app_id=0abb0580&app_key=bc931d03c51359082244df2fa414c487");
var dataArray = res.data.hits
return (dataArray);
}
async function insertSearchedRecipes(resArray) {
let response = await
Recipe.create({
name: resArray[i].recipe.label,
image: resArray[i].recipe.image,
url: resArray[i].recipe.url
});
return response;
};
router.get('/getRecipes/:ingredient', function (req, res) {
res.redirect("/");
var params = req.params.ingredient;
console.log(params);
let recipeFind = getRecipeData(params);
recipeFind.then(function (result) {
console.log(result[0]);
for (i = 0; i < result.length; i++) {
var recipeFindCreate = insertSearchedRecipes(result);
};
recipeFindCreate.then(function (results) {
console.log("HELLO")
// console.log(results);
res.render("recipeResults", {
data: results
});
});
});
});