https://blog.youkuaiyun.com/CuiCui_web/article/details/107042226这篇文章中介绍过如何连接数据库了,这里就不做过多的介绍。
1、 首先我们安装两个包,一个是解决跨域问题,还有一个是node中post请求参数会拿不到,需要借助插件
npm i cors --save 解决跨域问题
npm i body-parser --save post请求参数
2、 在app.js中引入
const bodyParser=require('body-parser');
const cors = require('cors'); // 解决跨域问题
var app = express();
app.use(cors()); // 解决跨域问题
app.use( bodyParser.urlencoded({
extended:false
}) );
3、 在接口文件中编写接口,如index.js文中,做好准备工作
var express = require('express');
var router = express.Router();
const connection = require('../db/database')
connection.getConnection(function (err,connection) { // 使用连接池
if(err){
console.log('与MySQL数据库建立连接失败!');
console.log('错误信息为:' + err);
}
else{
console.log('与MsSQL数据库建立连接成功!');
}
});
// 这中间插入接口代码
.........
module.exports = router;
…/db/database中就是数据库的配置
下面正式在index.js中编写接口
查询接口get请求(不带分页及参数)
router.get('/demo', (req, res, next)=> {
connection.query('SELECT * FROM student_info', function(err,result){
// resolve();
console.log(result)
res.send(result);
});
});
我们可以在浏览器中输入 http://localhost:3000/demo 进行查看
查询接口post请求(带参数及分页条件)
router.post('/demo', (req, res, next)=> {
console.log(req.body)
let name = req.body.name
let pageSize = req.body.pageSize // 页大小
let pageCurrent = req.body.pageCurrent // 当前页
let start=(pageCurrent-1)*pageSize; // 起始位置
connection.query(`SELECT * FROM student_info WHERE name LIKE '%${name}%' LIMIT ${start},${pageSize}`,function(err,result){
if(err) throw err;
let list = result
connection.query(`SELECT COUNT(*) AS total FROM student_info`,function(err,result1){
if(err) throw err;
console.log(result1[0].total)
let obj = {
pageSize: pageSize,
pageCurrent: pageCurrent,
total:result1[0].total,
list: list
}
res.send(obj);
})
})
});
注意,这里遇到一个坑,sql执行后拿不到数据,是由于我在sql中编写了运算表达式SELECT * FROM student_info WHERE name LIKE '%${name}%' LIMIT ${(pageCurrent-1)}*${pageSize},${pageSize}
,导致为undefined。把运算提出来,let start=(pageCurrent-1)*pageSize; // 起始位置
,就好了
新增数据 get请求
router.get('/demo_add', function(req, res, next) {
let params = req.query;
if(params){
console.log(params.name,params.age,params.address,params.id)
params.id = 'NULL';
console.log(params)
connection.query(`INSERT INTO student_info VALUES(${params.name},${params.age},${params.address},${params.id});`, function(err,result){
if(err){
res.send("新增失败"+err);
}else {
res.send("新增成功");
}
});
}
});
新增数据post请求
router.post('/demo_add',(req, res, next)=> {
let params = req.body.val;
console.log(params)
if(params){
params.id = 'NULL';
connection.query(`INSERT INTO student_info VALUES('${params.name}',${params.age},'${params.address}',${params.id});`, function(err,result){
if(err){
res.send("新增失败"+err);
}else {
console.log(result,'新增')
res.send("新增成功");
}
});
}
});
修改数据post请求
router.post('/demo_update', (req, res, next)=> {
let params = req.body.val;
if(params){
connection.query(`UPDATE student_info SET name='${params.name}',age=${params.age},address='${params.address}' WHERE id=${params.id} ;`, function(err,result){
if(err){
res.send("修改失败"+err);
}else {
console.log(result,'修改')
res.send("修改成功");
}
});
}
});
删除接口 delete
router.delete('/demo_del',(req, res, next)=> {
let params = req.body.id;
if(params){
connection.query(`DELETE FROM student_info WHERE id = ${params} ;`, function(err,result){
if(err){
res.send("删除失败"+err);
}else {
console.log(result,'删除')
res.send("删除成功");
}
});
}
})
本文前端代码展示是用react+element编写,文章链接https://blog.youkuaiyun.com/CuiCui_web/article/details/107108677