使用Node.js将MySQL数据打印到HTML页面

时间:2018-05-02 12:21:50

标签: javascript html mysql node.js

这是我第一次学习Node.js.我正在尝试将MySQL中的数据打印到我的HTML页面中,但每当我在浏览器http://localhost:3000/index.html上加载我的网站时,我都会在网页上收到此消息:Cannot GET /index.html。但是,当我在浏览器上加载此http://localhost:3000/rows/时,我将MySQL中的数据作为输出[{"ID":1,"Name":"Wendy Smith","Message":"Hello, how are you?"}]

我已经发布了以下代码。我正在努力解决这个问题。

的index.html

<html>
    <head>
        <title>My db rows</title>
    </head>

    <body>
        <h1>My Data</h1>

        <div id="output"></div>

        <script type="text/javascript">
            var opts = {
                url: 'http://localhost:3000/rows/'
             };

             fetch(opts)
                 .then((res) => {
                     if (res.ok) {
                         return res.json();
                     }
                  })
                  .catch(console.log);
        </script>
    </body> 
</html>

server.js

var express = require('express');
var app = express();
app.use(express.static('public'))
var mysql = require('mysql'); 

var connection = mysql.createConnection({  
    host: "localhost",
    user: "root",
    password: "",
    database: "mywebsite"
});        

app.get('/rows', function (req, res) {
    connection.connect();  
    connection.query('SELECT * FROM users', function(err, rows, fields) {  
        connection.end();
        if (err) throw err;  
        res.json(rows); 
    });
});

app.listen(3000, function () {
    console.log('Connected to port 3000!');
});

1 个答案:

答案 0 :(得分:3)

您缺少通过index.html页面路由请求的中间件代码。比方说,您已在const中设置了app.js变量:

const indexRouter = require("./app_server/router/index.html");

您可以这样呈现html页面:

app.use("/", indexRouter);

如果您想使用express.static中间件来提供public文件夹中的静态文件,请使用:

app.use(express.static(__dirname + "/public"));