在页面上显示[object Object]
行,但我知道它有价值,因为在控制台中它会输出正确的数据。当尝试在页面上显示时,它只输出[object Object],其中没有数据。如果我执行console.log,那么它会显示正确的数据。似乎HTML页面呈现行数据结构而不是数据本身。
以下是路线页
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
/* GET home page */
router.get('/', function(req, res, next) {
var connection = mysql.createConnection({
host : '',
user : '',
password : '',
database : ''
});
connection.connect();
connection.query('SELECT hashtag from recipients', function(err, rows, fields) {
if (!err) {
console.log(rows);
//send rows to template engine to render HTML.
res.render('mysql', {
rows: rows,
title:''
});
} else {
console.log('Error while performing Query.');
}
});
connection.end();
});
// Important
module.exports = router;
以下是视图页面
<html>
<head>
<title> <%= title %></title>
</head>
<body>
<table>
<tr>some heading</tr>
<% for(var i=0; i< rows.length; i++) { %>
<tr>
<td>
<%= rows[i] %>
</td>
</tr>
<% } %>
</table>
</body>
</html>
答案 0 :(得分:0)
“[object Object]”是将对象转换为字符串的结果。转换可能会在您的模板中自动执行。只需更改从对象到对象字符串属性插入数据的部分。
例如
res.render('mysql', {
rows: rows,
fields: fields,
title:''
});
并查看:
<html>
<head>
<title> <%= title %></title>
</head>
<body>
<table>
<tr>some heading</tr>
<% for(var i=0; i< rows.length; i++) { %>
<tr>
<% for(var f=0; f< fields.length; f++) { %>
<td>
<%= rows[i][fields[f].name] %>
</td>
<% } %>
</tr>
<% } %>
</table>
</body>
</html>
console.log
打印对象内容的原因是它会查看参数的类型,并通过util.inspect
很好地打印内容的各种智能技巧(查看所有format*
个函数below inspect)