4

私は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
  });
});

結果はコンソールに完全に表示されますが、Jadeでレンダリングしようとすると、いくつかの箇条書き(テーブルのエントリ数に等しい)が表示されますが、それぞれに[object、Object]が続きます。これは私のJadeファイルです:

h1 SQL Results are as follows:
ul
  each item, i in results
    li= item

結果を正しく表示するために必要な追加の手順などはありますか?

4

1 に答える 1

8

表示されている出力は、Jade が単に.toString()式の結果を呼び出しているためです。そして、Objectlike の場合itemそれがデフォルトの resultです:

> {}.toString()
'[object Object]'

より便利なものを得るには、フォーマットを指定する必要があります:

li #{item.prop1} (#{item.prop2})

JSON の場合:

li= JSON.stringify(item)

で表示される形式が必要な場合は、ビューヘルパーとして使用console.log()する関数を公開できます。util.inspect()

// Express 3
app.locals.inspect = require('util').inspect;
li= inspect(item)
于 2013-02-14T18:50:32.143 に答える