Я новичок в асинхронной разработке и разработке веб-приложений, и я не могу найти способ вернуть данные из функции до отображения моей страницы.Также новинка для продолжения и приветствуется любая обратная связь по форматированию или передовым методам.
Я попытался установить эту функцию как маршрут, который фактически возвращает данные, если я отправляю их как ответ res.send (рецепты).Но я хочу, чтобы он действовал как функция, которую я могу вызвать до того, как моя страница будет обработана
getRecipes.js
const sequelized = require('sequelize');
const op = sequelized.Op;
async function getRecipes(){
//SELECT * FROM ingredients
ingredients.findAll({
where: {},
raw : true
})
.then(ingredients_result =>{
//Get ingredient that expires soon
//Find recipes of the ingredient that expires soon
recipe_ingredient.findAll({
where: {},
raw: true
})
.then(recipe_ingrdient_result =>{
//If we have all ingredients for a recipe then find name of that recipe by ID
recipes.findAll({
where: {recipe_id: {[op.in]: suggested_recipes}}
})
.then(recipes =>{
someinfo = JSON.stringify(recipes);
// This is where i need the date to be returned from
return someinfo; // But every time i load a page this returns undefined
})
})
})
}
module.exports.getRecipes = getRecipes;
routs / user.js
const getStuff = require('./getRecipes');
router.get('/dashboard', async function(req, res){
//This returns undefined
var r_name = await getStuff.getRecipes();
res.render('dashboard',{
title:"Dashboard",
});
})
Я, вероятно, неправильно понимаю, как работает async, поэтому любая помощь будет принята с благодарностью!Я знаю, что хочу получить результаты, запустив функцию getRecipes до того, как страница будет отрисована.