2017-01-04 11 views
0

データオブジェクトをパラメータとしてレンダリングメソッドに渡し、変数名 "values"を割り当てます。私はそのプロパティ値を取得するために、このオブジェクトを参照し、私のEJSテンプレートファイルでEJS/node.jsでデータオブジェクトのプロパティを取得するにはどうすればよいですか?

[ RowDataPacket { 'AVG(numUsers)': 13.75 } ] 

::私には

<table> 
    <tr> 
    <th>Average attendance</th> 
    <tr> 
    <% for(var i = 0; i < values.length; i++) { %> 
    <tr> 
     <td><%- JSON.stringify(values) %></td> 
    </tr> 
    <% } %> 
</table> 

app.get('/', function(req, res) { 
    var query = 'SELECT AVG(numUsers) FROM attendance'; 
    connection.query(query, function(err, results) { 
    if(err) { 
     console.log(err); 
    } 
    console.log(results); 

    for(var i = 0; i < results.length; i++) { 
     var values = results[i]; 
    } 

    res.render('index', { values: results }); 
    }); 
}); 

コンソールには、以下の結果オブジェクト値を出力しますインデックスページには、次の文字列が印刷されます。

[{"AVG(numUsers)":13.75}] 

データオブジェクトから分離整数値13.75を直接取得するにはどうすればよいですか?

答えて

1

コンソールの出力によれば、resultsはオブジェクトからの配列です。 は、これは、あなたがconsole.log(results[0]['AVG(numUsers)']);

のようにそれを印刷することができます全体の結果オブジェクトが、そのインデックス AVG(numUsers)の値のみにアクセスすることを望んでいないとして、あなたは console.log(results[0]);

と同じようにアクセスし、データベースに最初に見つかったマッチにアクセスする手段あなたが唯一の浮動小数点値を含むクリーンな配列を、持っているしたい場合は

var values = []; 
for(var i = 0; i < results.length; i++) { 
    values[i] = results[i]['AVG(numUsers)']; 
} 
res.render('index', { values: values }); 

だから、ルータでのループは、のように見える必要があります。

そして、あなたのテンプレートファイルで単純に:

<% for(var i = 0; i < values.length; i++) { %> 
    <tr> 
    <td><%- values[i] %></td> 
    </tr> 
<% } %> 
0

私はむしろ、コントローラからのビューに渡す前に "値"変数を文字列化しようとします。次に、値の配列を繰り返して作成し、ビューに送信します。

コンソールからオブジェクトのコンソールログ(結果[i])を実行すると、コンソールにAVG(numUsers)の配列を含むオブジェクトが表示され、自分で作成することができるはずです結果の配列を取得し、それをビューに渡し、foreachで適切に反復処理します。

希望すると助かります!

関連する問題