node封装方法连接MySQL数据库步骤

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>

输出结果:
在这里插入图片描述
数据库数据:
在这里插入图片描述
界面显示结果:
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_47863547/article/details/119545972