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

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

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值