如何使用NodeJS将MySQL中的数据显示到HTML页面中

时间:2019-11-14 11:57:14

标签: javascript html mysql node.js express

我是Node JS的新手,我试图将MySQL表中提取的数据显示到HTML文件中的表中。但是我找不到任何可以帮助我的东西。如果有人可以帮助我获得解决方案,我将不胜感激! :) 这是我的js代码:

//app.js
// Get the mysql service
var mysql = require('mysql');
var express = require('express');
var app = express();

app.get('/', function (request , response) {
    fetchData(response);
    console.log('Done. Displayed Data.');

});
// Add the credentials to access your database
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : '',
    database : 'Breunninger',
    port: '3306'
});
// connect to mysql
connection.connect(function(err) {
    if(err){throw err;}
    console.log('Connected');
});

function executeQuery(sql, cb){
    connection.query(sql, function( result, fields){

        cb(result);
    })

}

function fetchData(response){
    executeQuery("SELECT username, tor, datum, sendungsstruktur FROM Buchung JOIN user ON(user.id = Buchung.userid)", function (result) {
        console.log(result);
        response.write('<div class="container-wrap"><table id="example" class="display"><tr>');
        for(var column in result[0]){
            response.write('<td> <label>' + column + '</label></td>');
            response.write('</tr>');
        }
        for(var row in result){
            response.write('<tr>');
            for(var column in result[row]){
                response.write('<td>' + result[row][column]+ '</td>');
            }
            response.write('</tr>');
        }
        response.end('</table></div>');
    });
}
<div class="container-wrap">
    <div class="flexslider">
        <script src="app.js"></script>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

executeQuery函数中有一个小错误(但很关键!),第一个参数应该是错误对象,因此,如果您可以按照下面的方式重写它,则查询应该可以工作。

function executeQuery(sql, cb){
    connection.query(sql, function( error, result, fields){
        if (error) {
            console.error("An error has occurred:", error);
        } else {
            cb(result);
        }   
    })
}

Node回调通常为错误对象保留第一个参数,很容易错过这一点!

此外,我们应该清楚,Node.js Express代码将在服务器端运行,因此要查看结果,您需要将浏览器指向该服务器所服务的主机和端口。 http://localhost:3000/(如果您这样做:)

app.listen(3000);