Uczę się Node i piszę pierwszą małą apkę. Mam problem z jedną funkcją, nie bardzo wiem co może być powodem tego że nie działa tak jak chcę, przyglądam się jej już dość długo i szczerze im dłużej to robię tym bardziej sam sobie to komplikuję. Teraz do rzeczy: pobieram z bazy danych użytkownika, który ma tablicę z id jego tasków. Potem chcę pobrać z bazy te taski po ich _id. Więc lecę po tablicy i daję zapytanie do bazy. Mimo zastosowania funkcji asynchronicznej i użycie await działanie 'przechodzi' dalej nie czekając na zapytanie, renderuje widok bez poczekania na odpowiedź z bazy, ale gdy taski zostaną już dociągnięte z bazy w console logu mam poprawne dane.
export const getMainPage = async (
req: express.Request,
res: express.Response
) => {
const userTasks: any = [];
try {
const fetchedUser = await User.findOne({ _id: req.session.loggedUserId });
await fetchedUser.tasks.forEach(async (id: string) => {
const fetchedTask = await Task.findOne({ _id: id });
userTasks.push(fetchedTask);
// console.log(userTasks); tutaj dostaje poprawne dane
});
//console.log(userTasks); ale dopiero po tym logu i po renderze widoku
res.render("main-page", {
path: "main-page",
csrfToken: req.csrfToken(),
tasks: userTasks,
});
} catch (e) {
console.log(e);
res.redirect('/add-task');
}
};
Dzięki z góry za poświęcony czas.