使用 Node.js 从 MySQL 获取数据并显示在索引页面上

Posted

技术标签:

【中文标题】使用 Node.js 从 MySQL 获取数据并显示在索引页面上【英文标题】:Get data from MySQL using Node.js and display it on index page 【发布时间】:2018-10-15 15:39:25 【问题描述】:

每当我在浏览器上运行我的网站时,我都会收到以下错误消息:http://localhost:3000。我正在努力解决这个问题。有没有其他方法或更好的方法从 mysql 获取数据并使用 Node.js 将其显示在我的索引页面上?

错误

Error: Failed to lookup view "index" in views directory "C:\test\views"

index.ejs

<!DOCTYPE html>
<html>
    <head>
        <title>MySQL Data</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    </head>
    <body>
        <table id="tblData" class="table table-bordered table-hover">
            <thead class="thead-inverse">
                <tr>
                    <th data-column-id="Name">
                        Name
                    </th>
                    <th data-column-id="Message">
                        Message
                    </th>
                </tr>
            </thead>
            <tbody></tbody>
        </table>
        <script>
            //Declare the var with the data
            var Result = <%- JSON.stringify(result) %>;

            var TableData = null;
            $(function () 
                function ajusTables() 
                    $('.table').css('width', '100%');
                    $('.dataTables_scrollHeadInner').css('width', '100%');
                

                TableData = $('#tblData').DataTable(
                    "serverSide": false,
                    "drawCallback": function (settings) 
                        ajusTables();
                     ,
                     "scrollX": true,
                     "processing": true,
                     "paging": true,
                     "lengthChange": false,
                     "searching": true,
                     "ordering": true,
                     "info": true,
                     "autoWidth": true,
                     "deferRender": true,
                     "columns": [
                          "data": "Name" ,
                          "data": "Message" ,
                     ],
                     "order": [0, "asc"]
                );
                console.log(Result);
                TableData.rows.add(Result)
                TableData.draw();
            );
        </script>
    </body>
</html>

我安装了 EJS 包,在 html 中使用 javascript 并从后端操作数据。

res.render("Index", result: result); 将调用 Index.ejs,传递带有数据的 JSON。

app.js

var express = require('express');
var app = express();
var mysql = require('mysql');
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded( extended: false );

app.use(bodyParser.json());
app.use(bodyParser.urlencoded(extended: false));
app.use('/', express.static(__dirname + '/'));
app.set("view engine", "ejs");

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

connection.connect();

app.get('/', function (req, res) 
    connection.query('SELECT * FROM chat', function(err, result, fields)   
        connection.end();
        if (err) throw err;
        console.log("Data displayed");
        res.render("index",  result: result );
    );
);

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

【问题讨论】:

错误说它在C:\test\views 中找不到索引视图所以问题是你在C:\test\views 中有你的index.ejs 吗? 不,它在C:\test。我没有名为 views 的文件夹 所以创建它并将文件放在那里 现在我得到这个错误:Error: Failed to lookup view "index" in views directory "C:\test\views\views" 您是否更改了代码中的任何内容? res.render("index"这行你改了吗? 【参考方案1】:

检查以确保文件名为 index.ejs 而不是 Index.ejs(大小写)。

【讨论】:

【参考方案2】:

参考链接:https://www.codementor.io/naeemshaikh27/node-with-express-and-ejs-du107lnk6

请在 views 文件夹中创建 index.ejs

【讨论】:

以上是关于使用 Node.js 从 MySQL 获取数据并显示在索引页面上的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 node.js MySQL 从 MySql DB 获取结果并将它们发送回 API.ai - DialogFlow

如何以 Node JS 作为后端将 Mysql 数据获取并显示到 ReactJS 前端?

如何从node.js中的mysql获取最近添加的重新编码ID

node.js 同步 mysql 查询

使用 node.js 将 JSON 写入 mysql 数据库

Node.js mysql在函数外导入查询结果[重复]