当我尝试在Jade中显示SQL查询结果时获取[object Object]

kar*_*oma 4 node.js pug

我开始使用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)

是否需要额外的步骤或某些东西才能使结果正确显示?

Jon*_*ski 8

你看到的输出是因为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)