【发布时间】:2013-11-14 04:08:27
【问题描述】:
我正在使用 node.js、express、jade 和 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
当我运行它时,控制台会显示查询结果,但玉似乎拒绝检查它。 我能找到的所有教程似乎都与我的代码几乎相同。 我之前遇到了一个错误:
5| Events List
6| ul
> 7| - each event in items
8| li event.name
Cannot read property 'length' of undefined
但不记得当它弹出时我在做什么。
当前控制台输出:
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
谁能发现我做错了什么?
【问题讨论】:
-
控制台将
rows显示为一个数组,作为对索引函数的调用的一部分? -
请添加准确的 console.log 结果。 rows 可能作为数组返回,作为 items 键的值没有意义。
-
您至少需要使用
li= event.name来扩展event.name,但这可能不是您的问题。你不是在某处覆盖items吗? -
项目未在其他任何地方使用。我试过
li= event和li= event.name