Problem polega na tym że funkcje get_username()
i get_email()
nie działają mimo tego że prawie identyczne funkcje get_theme
i get_profpic
działają bez zarzutu. Wiem że problem polega na tym że "chcę zjeść pizze zanim zostaje dostarczona", ale jestem dość początkujący w node i nie mam zielonego pojęcia na temat asynchroniczności więc poszkuję pomocy na ten temat.
Mój kod (ten potrzebny):
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const session = require("express-session");
const cookieParser = require("cookie-parser");
const urlencodedparser = bodyParser.urlencoded({extended:false})
const mysql = require('mysql')
require('dotenv').config();
[...]
app.get('/account/user', (req, res) =>{
if(req.session.user_id == undefined){
res.redirect('/account/login')
}else{
var theme = get_theme(req);
var profpic = get_profpic(req);
var username = get_username(req);
var email = get_email(req);
console.log(`${username} ${email}`)
res.render('user',{
theme: theme,
profpic: profpic,
username: username,
email: email
});
}
})
[...]
const get_theme = (req) => {
if(req.session.user_id != undefined){
con.query(`SELECT theme FROM theme WHERE id = ${req.session.user_id};`, (err, result) => {
if(err) throw err;
req.session.theme = result[0].theme.toLowerCase();
})
req.session.save();
return req.session.theme;
}else{
if(req.session.theme != undefined){
return req.session.theme;
}else{
req.session.theme = 'dark';
req.session.save();
return req.session.theme;
}
}
}
const get_profpic = (req) => {
if(req.session.user_id != undefined){
con.query(`SELECT location FROM profpic WHERE id = ${req.session.user_id};`, (err, result) => {
if(err) throw err;
if(result[0] != undefined){
req.session.profpic = result[0].location;
}
})
if(req.session.profpic == undefined){
req.session.profpic = '../profpic/default.png'
}
req.session.save();
return req.session.profpic;
}
}
const get_username = (req) => {
if(req.session.user_id != undefined){
con.query(`SELECT username FROM users WHERE id = ${req.session.user_id};`, (err, result) => {
if(err) throw err;
if(result[0] != undefined){
console.log(result[0].username + 'a')
req.session.username = result[0].username;
}
})
req.session.save();
console.log(req.session.username + 'b')
return req.session.username;
}
}
const get_email = (req) => {
if(req.session.user_id != undefined){
con.query(`SELECT email FROM users WHERE id = ${req.session.user_id};`, (err, result) => {
if(err) throw err;
if(result[0] != undefined){
console.log(result[0].email + 'a')
req.session.email = result[0].email;
}
})
req.session.save();
console.log(req.session.email + 'b')
return req.session.email;
}
}