Bonjour,
Je me heurte à un problème avec une requête SQL (j'utilise Express et Mysql), Je souhaite récupérer les articles qu'il y a dans la base de données à la table "news" à l'appel de la page index (/), du coup j'ai écrit ce code :

router.get('/', function(req, res) {
    var news;
    db.connection.query('SELECT * FROM `news`', function(err, result, fields) {
        if (err)  { console.log(err.stack); }
        for (var i = 0; i < result.length; i++) {
            news = result;
        }
    });
    res.render('index', {title: 'Index', sess: req.session, err_class: "", err_msg: "", news: news});
});

Seulement, lorsque je fais un console.log de la variable news j'obtiens : undefined.
Par contre, lorsque je met la requête hors de la fonction comme ceci :

var news;
    db.connection.query('SELECT * FROM `news`', function(err, result, fields) {
        if (err)  { console.log(err.stack); }
        for (var i = 0; i < result.length; i++) {
            news = result;
        }
    });

router.get('/', function(req, res) {    
    res.render('index', {title: 'Index', sess: req.session, err_class: "", err_msg: "", news: news});
});

Sa fonctionne correctement mais lorsque j'actualise la page je ne reçois pas les nouveaux articles, je dois toujours restart le serveur pour avoir les nouveaux articles
Si vous avez une solution je suis preneur, merci !

1 réponse


Nealll
Auteur
Réponse acceptée

C'est bon, j'ai réussi à trouver réponse à mon problème. je devais juste mettre l'appel du render dans la fonction de la requête.