node(express)实现增删改查、分页等接口

    技术2023-12-20  74

    https://blog.csdn.net/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.csdn.net/CuiCui_web/article/details/107108677

    Processed: 0.012, SQL: 9