错误
问题:无法读取未定义的属性“长度” jade_debug.unshift.lineno(eval at (C:\ Users \用户开发\ Node_js \ node_modules \玉\ lib中\ jade.js:160:8), :111:31)在eval(eval at (C:\ Users \用户开发\ Node_js \ node_modules \玉\ lib中\ jade.js:160:8),
数据库功能
exports.selectRows = function(){
var objBD = BD();
objBD.query('SELECT * FROM usr ', function(results) {
return(results);
});
}
路线
exports.index = function(req, res) {
res.render('customer/index',{ customers: db.selectRows() });
};
index.jade
each item in customers
tr
td
a(href='/customer/details/#{item.id}') #{item.id}
td #{item.name}
td #{item.email}
td #{item.phone}
答案 0 :(得分:1)
代码问题是selectRows
方法是异步执行的,并且处理程序方法中的db.selectRows()
表达式总是返回undefined
值,因此execption(customers
模板变量是undefined
)。
您应该在代码中添加以下更改,以使其正常工作:
数据库功能
exports.selectRows = function(callback){
var objBD = BD();
objBD.query('SELECT * FROM usr ', callback);
}
<强>路线:强>
exports.index = function(req, res) {
db.selectRows(function(results){
res.render('customer/index', { customers: results });
});
}
有时您可能会遇到callback
获得两个参数的情况(非常常见的Node.js模式):
undefined
如果有两个参数(错误和结果),您的路线应如下所示:
exports.index = function(req, res) {
db.selectRows(function(err, results){
if (err) return res.send(500, "DB QUERY ERROR");
res.render('customer/index', { customers: results });
});
}
您还可以简化index.jade
each item in customers
tr
td: a(href='/customer/details/#{item.id}')= item.id
td= item.name
td= item.email
td= item.phone
我希望这会有所帮助。