实现效果
实现步骤
一、DBConfig.js
/*
* @Descripttion:文件配置了,数据库信息
* @version:
* @Author: zhangfan
* @email: 2207044692@qq.com
* @Date: 2020-10-19 11:49:28
* @LastEditors: zhangfan
* @LastEditTime: 2020-10-19 11:52:45
*/
const config = {
// 启动端口
port: 3000,
// 数据库配置
database: {
DATABASE: 'mysql',
USERNAME: 'root',
PASSWORD: '123456',
PORT: '3306',
HOST: 'localhost',
}
}
module.exports = config
二、DBHelp.js
/*
* @Descripttion:数据库连接池的连接与释放
* @version:
* @Author: zhangfan
* @email: 2207044692@qq.com
* @Date: 2020-10-19 11:51:28
* @LastEditors: zhangfan
* @LastEditTime: 2020-10-19 11:53:36
*/
const DB_MYSQL = require('mysql');
const DB_CONFIG = require('./DBConfig');
/**
* 数据库连接池
* @type {Pool}
*/
const pool = DB_MYSQL.createPool({
host: DB_CONFIG.database.HOST,
user: DB_CONFIG.database.USERNAME,
password: DB_CONFIG.database.PASSWORD,
database: DB_CONFIG.database.DATABASE,
port: DB_CONFIG.database.PORT
});
/**
* 通用方法
* @param sql
* @param options
* @param callback
*/
const DB = (sql, options) =>{
options = (options) ? options:{}
return new Promise((resolve, reject) => {
pool.getConnection((error, connection) => {
if (error) {
reject(error);
} else {
connection.query(sql, options, (error, results, fields) => {
//事件驱动回调
if (results){
resolve(results);
}
if (error) {
reject(error)
}
//释放连接
// connection.release();
});
}
pool.releaseConnection(connection);
});
})
};
module.exports = DB;
三、getUserList.js
/*
* @Descripttion:获取用户信息接口封装
* @version:
* @Author: zhangfan
* @email: 2207044692@qq.com
* @Date: 2020-10-19 11:55:06
* @LastEditors: zhangfan
* @LastEditTime: 2020-10-19 15:02:47
*/
let _ = require('lodash');
let DBHelp = require('../config/DBHelp.js');
let getArticle = (data, success) =>{
// SQL 语句
let SQL = 'SELECT * FROM userlist';
const resultData = {
code: null,
data: null,
codeMessage: null
}
DBHelp(SQL, (error, result) =>{
if(error){
resultData.error = error.message
}
resultData.code = 200;
resultData.data = result;
resultData.codeMessage = 'success'
success(resultData);
})
}
module.exports = getArticle
四、index.js
/*
* @Descripttion:
* @version:
* @Author: zhangfan
* @email: 2207044692@qq.com
* @Date: 2020-10-19 10:51:20
* @LastEditors: zhangfan
* @LastEditTime: 2020-10-19 14:47:02
*/
var express = require('express');
var router = express.Router();
let getUserList = require('../controller/getUserList.js');
/**
* 数据查询
*/
router.get('/userlist', (request, response, next)=>{
getUserList(request.query, data =>{
response.end(JSON.stringify(data));
})
});
module.exports = router;
五、app.js
const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// 可跨域 ,编码格式
app.all('*',function(request, response, next){
response.header('Access-Control-Allow-Origin','*');
response.header('Access-Control-Allow-Headers','X-Requested-With');
response.header('Access-Control-Allow-Methods','PUT,POST,GET,DELETE,OPTIONS');
response.header('X-Powered-By','3.2.1');
response.header('Content-Type','application/json;charset=utf-8');
next();
});
// 抛出接口
app.use('/', indexRouter);
app.use('/user', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;