我开始使用Node.js,我完全不知道为什么我无法在页面上呈现我的SQL查询结果.
connection.query('SELECT * FROM testTable', function selectCb(err, rows, fields) {
if (err) {
throw err;
}
for (var i in rows) {
console.log(rows[i]);
}
res.render('showResults.jade', {
results: rows
});
});
Run Code Online (Sandbox Code Playgroud)
结果在控制台中完美显示,但是当我尝试使用Jade渲染它时,我得到了一些子弹点(等于表中的条目数),但每个子弹点后跟[object,Object].这是我的Jade文件:
h1 SQL Results are as follows:
ul
each item, i in results
li= item
Run Code Online (Sandbox Code Playgroud)
是否需要额外的步骤或某些东西才能使结果正确显示?
你看到的输出是因为Jade只是调用.toString()表达式的结果.并且,对于Objects item,这是默认结果:
> {}.toString()
'[object Object]'
Run Code Online (Sandbox Code Playgroud)
为了获得更有用的东西,您必须指定格式:
li #{item.prop1} (#{item.prop2})
Run Code Online (Sandbox Code Playgroud)
对于JSON:
li= JSON.stringify(item)
Run Code Online (Sandbox Code Playgroud)
如果你希望你看到的格式console.log(),你可以将该功能它使用,util.inspect()作为一个视图助手:
// Express 3
app.locals.inspect = require('util').inspect;
Run Code Online (Sandbox Code Playgroud)
li= inspect(item)
Run Code Online (Sandbox Code Playgroud)