1.安装MySQL
cnpm install --save-dev mysql
2.创建服务器 app.js文件
const express=require("express");
//引入ejs模板
const ejs=require("ejs");
let app=express();
let port=8000;
let host='localhost'
//设html后缀
app.set('views','./view');
//设置html模板渲染引擎
app.engine('html',ejs.__express);
//设置渲染引擎为html
app.set('view engine','html');
//路由
let Index=require('./routers/index')
app.use('/',Index);
app.listen(port,host,()=>{
console.log(`http://${host}:${port}`)
});
3.创建MySQL文件
3.1创建MySQL连接属性 文件setting.js
//暴露设置的数据库
module.exports={
user:'root',
password:'123456',
host:'localhost',
port:3306,
database:'school'
}
3.2创建连接数据库的文件mysqlconnect.js
//数据库连接文件
const mysqlClient = require("mysql");
//引入setting文件
const set = require("./setting");
class Connect {
//声明一个变量
client;
//返回json数据的方法
JSONParser(args) {
return JSON.parse(JSON.stringify(args));
}
queryMysql(str = '', data = null) {
try {
//创建连接对象
//连接数据的方法
this.connectMysql();
this.client.connect();//连接数据库
return new Promise((resolve, reject) => {
this.client.query(str, data ? data : null, (err, res) => {
if (err) {
reject(err);
}
else {
resolve(this.JSONParser(res));
}
});
});
}
catch (e) {
throw e;
} finally {
if (this.client) {
//关闭数据库
this.client.end();
}
}
};
//每次更新的时候会出现错误,所以要封装一个方法 每次刷新的时候都要连接
connectMysql() {
try {
this.client = mysqlClient.createConnection({
user: set.user,
password: set.password,
host: set.host,
database: set.database,
port: set.port
});
}
catch (e) {
throw e;
}
}
}
//暴露出去Connect class用Es6写的
module.exports = Connect;
3.3引入数据库数据文件 mysqldata.js
//引入mysqlconnect文件 使用里面是封装的方法
const mysqlClt=require("./mysqlconnect");
let mysqlDAL=new mysqlClt();
class DAL{
HotNum(){
let sql='select * from user';
//调用方法
return mysqlDAL.queryMysql(sql);
}
}
module.exports=DAL;
4.路由下的index.js文件
const express=require("express");
const ejs=require("ejs");
const router=express.Router();
//调数据库数据
let mysqlDAL = require("../mysql/mysqldata");
let mysql = new mysqlDAL();
router.get('/',(req,res,next)=>{
let getData = async () => {
let hotNum = await mysql.HotNum();
// console.log(hotNum);
return hotNum;
};
getData().then((result) => {
console.log(result);
res.render('index.html',{
//渲染到index页面
user:result
}),
(err,html)=>{
if(err)
throw e
res.send(html)
}
})
})
module.exports=router
index.html文件代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>所有学生信息</p>
<table> <%for(var i=0;i<hotNum.length;i++){
%>
<tr>
<td><%= hotNum[i].name%></td>
<td><%= hotNum[i].sex%></td>
<td><%= hotNum[i].age%></td>
<%}%>
</tr>
</table>
</body>
</html>
输出结果:
数据库数据:
界面显示结果: