显示数据结构而不是数据

时间:2016-08-09 01:36:26

标签: javascript mysql node.js ejs

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

1 个答案:

答案 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