2016-08-09 26 views
0

Auf der Seite zeigt es Zeilen von [object Object], aber ich weiß, dass es Wert darin gibt, weil es in der Konsole die richtigen Daten ausgibt. es gibt nur [object Object] ohne Daten aus, wenn versucht wird, auf der Seite anzuzeigen. Wenn ich console.log mache, zeigt es die korrekten Daten an. Es scheint, als ob die HTML-Seite die Zeilendatenstruktur darstellt und nicht die Daten selbst.Anzeigen der Datenstruktur anstelle der Daten

Unterhalb der Route Seite ist

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; 

Im Folgenden wird die Ansicht Seite

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

Antwort

0

"[object Object]" ist Ergebnis des Objekts in einen String zu konvertieren. Die Konvertierung wird wahrscheinlich automatisch in Ihrer Vorlage ausgeführt. Ändern Sie einfach den Teil, in dem Sie Daten von Objekt zu Objektstring-Eigenschaft interpolieren.

Zum Beispiel

res.render('mysql', { 
    rows: rows, 
    fields: fields, 
    title:'' 
    }); 

und Aussicht:

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

Der Grund console.log Inhalt des Objekts gedruckt wird, ist, dass es auf der Art des Parameters aussieht und funktioniert verschiedene Smart-Tricks Inhalt schön drucken über util.inspect (siehe alle format* Funktionen below inspect)