显示数据结构而不是数据

Displaying data structure instead of data

在页面上它显示了 [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>

"[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)