Reputation: 1197
I'm using node.js, express, jade and mysql.
\\app.js
var db_config = {
host: 'localhost',
port: '3306',
[redacted]
};
var connection = mysql.createConnection(db_config);
...
app.get('/events', routes.events(connection));
\\index.js
exports.events = function (db) {
return function (req, res) {
db.connect(function (err) {
if (err) {
console.log('error\'d:', err);
}
});
db.query('SELECT name FROM event', function (err, rows, fields) {
if (err) throw err;
else {
console.log(rows);
res.render('events', { "items": rows });
}
});
}
\\events.jade
extends layout
block content
h1.
Events List
ul
- each event in items
li = event
When I run this, the console shows the results of the query, but jade seems to refuse to go over it. All the tutorials I can find seem to have near identical code to mine. I was previously getting an error:
5| Events List
6| ul
> 7| - each event in items
8| li event.name
Cannot read property 'length' of undefined
but can't remember what I was doing when that popped up.
Currently console outputs:
Express server listening on port 3000
[ { name: 'Test event' },
{ name: 'Test event 2' },
{ name: 'Test event 3' },
{ name: 'Woooh event' } ]
GET /events 200 364ms - 151b
GET /stylesheets/style.css 304 4ms
Can anyone spot what I'm doing wrong?
Upvotes: 2
Views: 808
Reputation: 1197
Got it sorted with some help
li #{event.name}
and
res.render('events', { "items": rows });
instead of
res.render('events', { "items": JSON.stringify(rows) });
Upvotes: 1
Reputation: 11
Try without '-' and use global variable locals:
each event in locals.items
Upvotes: 1
Reputation: 14003
check JSON.stringify();
try:
else {
console.log(rows);
res.render('events', { "items": JSON.stringify(rows)});
}
Upvotes: 0