on page shows rows of [object object]
know there's value in because in console outputs right data. outputs [object object] no data in when trying display on page. if console.log shows correct data. seems html page renders row data structure , not data itself.
below route page
var express = require('express'); var router = express.router(); var mysql = require('mysql'); /* home page */ router.get('/', function(req, res, next) { var connection = mysql.createconnection({ host : '', user : '', password : '', database : '' }); connection.connect(); connection.query('select hashtag recipients', function(err, rows, fields) { if (!err) { console.log(rows); //send rows template engine render html. res.render('mysql', { rows: rows, title:'' }); } else { console.log('error while performing query.'); } }); connection.end(); }); // important module.exports = router;
below view page
<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]" result of converting object string. conversion performed automatically inside template. change part interpolate data object object string property.
for example
res.render('mysql', { rows: rows, fields: fields, title:'' });
and view:
<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>
the reason console.log
printing content of object looks @ type of parameter , various smart tricks print content nicely via util.inspect
(look @ format*
functions below inspect)
Comments
Post a Comment