nodejs(8)---nodejs简单的系统的访问mysql

在网上看到了很多的教程,每次看到那些访问mysql的都头疼,如何映射表格乱七八糟的,大家学习node不就贪图方便么,写后台直接springboots不好么,这里提供了一个简单的又系统的访问msql的模板,欢迎大家使用

整个模板思路如下,

  • 封装连接数据库的方法
  • 用mapper来封装连接数据库的请求
  • 再用路由调用并引入连接数据库请求并分装
  • app.js直接调用封装好的路由文件

1.首先第一步,下载mpn模板

npm init --yes

2.下载完毕后,再下载express包(node框架),nodemon包(热更新)和mysql包(连接数据库)

npm install express --save
npm install -g nodemon //全局安装
npm install mysql

3.创建三个文件夹,文件夹Router用来放路由文件,文件夹mysqlconn用来连接数据库,文件夹mapper用来对数据库发送连接请求并处理,三个文件夹分别封装三个处理

在这里插入图片描述

4.连接数据库文件有两个,conn.js文件用来放连接信息,index.js文件用来连接数据库并封装请求
conn文件

let connection = {
    host : 'localhost',
    user : 'root', 
    password : '123456',
    database : '你的数据库名称'
};
module.exports=connection;

index文件

let mysql = require('mysql');//引入mysql模块
var databaseConfig = require('./conn.js');  //引入数据库配置模块中的数据

//向外暴露方法
module.exports = {
    async query(sql, params) {
        //每次使用创建链接,数据操作完成关闭连接
        var connection = mysql.createConnection(databaseConfig);
        
        return new Promise((resolve, reject) => {//返回一个Promise对象
            connection.connect(async function (err) {
                if (err) {
                    console.log('数据库链接失败');
                    throw err;
                }

                //传入三个参数,第一个参数sql语句,第二个参数sql语句中需要的数据,第三个参数回调函数
                connection.query(sql, params, function (err, results, fields) {
                    if (err) {
                        console.log('数据操作失败');
                        throw err;
                    }

                    //停止连接数据库
                    connection.end(function (err) {
                        if (err) {
                            console.log('关闭数据库连接失败!');
                            throw err;
                        }
                    });
                    resolve(results)
                });
            })
        });
    }
};

5.封装完连接数据库的请求后,再在mapper里面编写操作数据库的请求
mapper文件

var db = require("../mysqlconn/index")
var obj={
    //两个简单的请求
    async getcontext(id){
        let data = await db.query('select id,title,context from book where id=? ', [id]); 
        return data;
    },
    async vaguetitle(title){
        let data = await db.query('select id,title from love where book like "%'+title+'%" ', []);       
        return data;
    },
   
}
module.exports=obj;

6.在路由文件里面调用mapper文件,将连接数据库得到的数返回到前端
Router文件

const express = require('express');
const router=express.Router();
const Book=require("../mapper/bookMapper");

//获取内容get接口,用异步的方法将数据返回给前端
router.get('/getcontext', (req, res) =>{ 
    let {id}=req.query;
    let p=Book.getcontext(id);
    p.then((data)=>{
        res.send(data) 
    })
})

//模糊标题
router.get('/vaguetitle', (req, res) =>{ 
    let {title}=req.query;
    let p=Book.vaguetitle(title);
    p.then((data)=>{
        res.send(data) 
    })
})

module.exports=router;

7.app.js调用路由文件即可


const express = require('express');
const app = express();
const BookRouter= require('./Router/BookRouter');


app.use(BookRouter)
app.listen(3001, () => {
  console.log(`开启成功`)
})

这样一个简简单单的访问后台mysql服务器就完成了。
文章参考https://segmentfault.com/a/1190000014907972,并对其进行了改进,改为异步编程获取

相关文章

根据官网 入门 express
java叫接口control什么的app.get.post等等都是请求方式我们可...
为了前端丢进去的时候可以直接判断中间件就是经过了这个就会...
Express 文件的上传和下载
运行命令下载app.js 增加中间件。
基本模板来的 后面用后就有什么加什么都行。