Bonjour,

je suis la formation nodeJS et dans le dernier TP pour l'affichage des commentaires j'ai un petit soucis sur lequel je n'arrive bizarrement pas à me dépatouiller.
J'effectue une connection à la base de données, je reccupère tous les commentaires et je les envoie à la vue par un render afin de les afficher.
Je pense avoir bien recopié mon code sauf que voilà au moment d'afficher le site, mon serveur me retourne que ma variable dans la vue est inconnue. J'ai testé différentes solutions mais la je bloque depuis trop longtemps pour un apprentissage mais j'aimerais comprendre mon erreur.

voila ma classe Message :

...
let connection = require('../config/db');

class Message {

static create (content, cb) {
    connection.query('INSERT INTO messages Set content = ?, created_at = ?',[content, new Date()], function(error, data) {
        if (error) throw error;
        cb(data);
    });
}

static all (cb) {
    connection.query('SELECT * FROM messages', function(error,data) {
        if(error) throw error;
        cb(data);
    })
}

}
module.exports = Message;
...

Mon get dans server.js

dans le response.render je créé bien une variable messages qui va contenir mes "mess".
un console.log de mess affiche bien les messages.

app.get('/', function(request,response) {
    let Message = require('./models/message');
    Message.all(function(mess){
        response.render('pages/index', {messages: mess});
    });
    response.render('pages/index');
});
Mon index.js
<%- include('header'); -%>

<form action="/" method="post" class="ui form">
    <div class="field">
        <label for="message">Message</label>
        <textarea name="message" id="message"></textarea>
    </div>
    <button type="submit" class="ui blue labeled submit icon button">
        <i class="icon edit"></i>Envoyer
    </button>
</form>

<div class="ui comments">
    <h3 class="ui dividing header">Commentaires</h3>
    <% for (message in messages) { %>                           <== L'erreur me dit : messages is not defined
        <div class="comment">
            <div class="content">
                <div class="test"><%= message.content %></div>
            </div>
        </div>
    <% } %>%>
</div>

<%- include('footer'); -%>

Un petit coup de main (ou de clavier) ne me ferait pas de mal.
Merci

1 réponse


DamienCrow
Auteur
Réponse acceptée

Et comme toujours, en postant j'ai trouvé mon problème!!!
dans mon server.js j'avais 2 render! donc le suivant qui ne contenait pas de variable m'écrasait le 1er.
sur le coup je mérite le coup de clavier ;-)

PS : UN GROS MERCI POUR LES TUTOs