1.目录结构:
2.安装相应的插件:
npm i body-parser express mysql
3.app.js代码
const express = require('express');
const app = express();
// 引入第三方插件
const bodyParser = require('body-parser');
// 引入自己写的API接口
const apiUser = require('./routers/user')
// 使用第三方插件
app.use(bodyParser.json()); // 当post请求时,里面的参数可以通过req.body()获取一个对象
app.use(bodyParser.urlencoded({ extended: false }));
// 使用API接口
app.use(apiUser);
app.listen(3000,()=>{
console.log("启动服务: http://127.0.0.1:3000")
});
4.sql/pool.js代码
var mysql = require('mysql');
// 配置信息
const options = {
host : 'localhost',
user : 'root',
password : '123456',
database : 'hp_my_blog',
port : '3306',
connectTimeout : 5000, // 连接超时时间
multipleStatements : false, // 是否允许一个query语句里面包含多条sql语句
connectionLimit : 100, // 链接数限制
queueLimit : 0, // 最大连接等待数(0为无限制)
}
// 连接数据库
var pool = mysql.createPool(options);
// 监听当数据库失去连接的时候重新连接
pool.on('error',err=>{
console.log("数据库错误,重新连接中.....");
err.code === 'PROTOCOL_CONNECTION_LOST' && setTimeout(reConnectPool);
});
// 重连数据库
function reConnectPool() {
pool = mysql.createPool(options);
}
// 重构查询
pool.hp_query = function(sql,callBack){
pool.getConnection((err,conn)=>{
conn.query(sql,(err,data)=>{
callBack(err,data);
})
conn.release();
});
}
module.exports = pool;
5.router/user.js
const epxress = require('express');
const pool = require('../sql/pool');
const router = epxress.Router();
router.get('/user',(res,req,next)=>{
pool.hp_query("select * from user",(err,data)=>{
if(err) next(err)
req.json(data);
})
})
// 当调用api出现错误时,统一到这里处理;
router.use((err,req,res,next)=>{
if(err) {
res.status(500).json(err);
}
})
module.exports = router;
查询效果