Bonjour,
Voila je rencontre un petit problème avec mon code.
Je récupère les informations de la base de données lorsque j'arrive sur la route "/" et je les envoie à la vue sous forme d'objet JSON.
Info : le console.log(JSON.stringify(rows)) me renvoie (par exemple lorque je n'ai qu'un seul enregistrement)
[{"id":4,"title":"First post","content":"content"}]
router.get('/', (req, res) => {
db.query('SELECT * FROM posts', (err, rows) => {
if(err) {
throw err
}
console.log(JSON.stringify(rows))
res.render('home', {
title: 'Posts !',
results: JSON.stringify(rows)
})
})
})
Je parse les données envoyées pour les affichés
- if(results !== null)
JSON.parse(results)
each row in results
.panel.panel-primary
.panel-heading
h3 #{row.title}
.panel-body
p #{row.content}
- else
.alert.alert-info
p There are no posts
Je veux pouvoir afficher tous les résultats un par un peu en étant bien organisés.
Les box s'affichent bien mais sont vides et il en a bien une centaine (je vais pas m'amuser à toutes les compter) alors que dans la base de données il n'y a qu'une seule entrée.
Si vous pouvez m'aider à enfin comprendre l'utilisation d'une base de données avec express ce serait sympa de votre part.
Merci de votre aide.
Salut,
Alors je ne connais pas ton moteur de template mais je pense pas que l'erreur vienne de là.
Lorsque tu fais ça:
res.render('home', {
title: 'Posts !',
results: JSON.stringify(rows)
})
la propriété results
est une chaine de caractère et non pas un tableau: du coup tu itère non pas sur tes éléments mais sur les caractères. Du coup ton moteur de template ne trouve pas les propriété id
, title
, etc ...
Je pense que tu devrais simplement mettre:
res.render('home', {
title: 'Posts !',
results: rows
})
Salut,
Le moteur de template est Pug, qui est le remplacant de Jade (http://pujs.org).
J'ai résolu le problème en remplacant
results: JSON.stringify(rows)
par
results: rows
comme tu l'as dit mais il m'a aussi fallu enlever le parse JSON dans la vue et modifier l'itération.
Merci pour ton aide, je vais enfin pouvoir réussir à utiliser mysql correctement avec express :).