基于node操作数据库进行删查改写 || express(二)

1 . 构建基本的服务器与接口

const express = require('express');
const cors = require('cors');
const app = express();

// 处理跨域中间件
app.use(cors())
// 处理JSON表单格式中间件
app.use(express.json());
// 处理application/x-www-form-urlencoded表单格式的中间件
app.use(express.urlencoded({ extended: false }))

// 注册接口
app.post('/user', (req, res)=>{
  const body = req.body
  res.send({
    status: 200,
    data: 'ok',
    message: '成功'
  })
})

// 登录接口
app.post('/api' ,(req, res)=>{
  const body = req.body
  res.send({
   status: '200',
   data:result,
   message:'成功'
  })
})

// 查询接口
app.post('/update', (req, res)=>{
  const body = req.body; 
  res.send({
    status: 200,
    data: body,
    message: '请求成功'
  })
})

// 更新接口
app.get('/select', (req, res)=>{
  const body = req.query; 
  res.send({
    status: 200,
    data: body,
    message: '请求成功'
  })
})

// 删除接口
app.get('/delete', (req, res)=>{
  const body = req.query; 
  res.send({
    status: 200,
    data: body,
    message: '请求成功'
  })
})

// 启动服务器
app.listen(80, () => {
  console.log('express server running at http://127.0.0.1')
})

2 . 基于node进行数据库删查改写

  • 如果不会创建数据库,这个......自己想办法吧,留个网上的教程传送门 -- MySQL 教程--
1 . 建立与 MySQL 数据库的连
  • 首先下载npm i mysql下载依赖包
// 导入 mysql 模块
const mysql = require('mysql');

// 建立与 MySQL 数据库的连接关系
const sql = mysql.createPool({
  host: '', // 数据库的 IP 地址
  user: '', // 登录数据库的账号
  password: '', // 登录数据库的密码
  database: '' // 指定要操作哪个数据库
  connectTimeout: 5000, //连接超时
  multipleStatements: false //是否允许一个query中包含多条sql语句
})
2 . 创建错误级别中间件
// 错误级别中间件
app.use((req,res,next)=>{
  res.cc = function(err, status = 201){
    res.send({
      status,
      data:"操作失败",
      message: err
    })
  }
  next()
})
3 . 对注册接口进行改造进行用户注册
// 注册接口
app.post('/user', (req, res)=>{
  const body = req.body
  // 查询数据库 *(所有) 表单为 ev_users 里 所有username   ? 为占位符代表条件
  const query = 'select * from ev_users where username=?'
  // ()  第一位为sql语句   第二位为占位符的条件
  sql.query(query, body.username,(err, result)=>{
    // err 为执行错误信息    result为数据
    if (err) return res.cc('服务端错误');
    // 判断影响行数  能查询到证明数据库表单里存在这个值
    if(result.length > 0) return res.cc('用户名已存在')
    // 插入数据
    const sqlint = 'insert into ev_users set ?'
    sql.query(sqlint, {username: body.username, password:body.password} ,(err,result) => {
      if(err) return res.cc(err)
      if(!result.affectedRows) return res.cc('注册失败')
      res.send({
        status: 200,
        data: 'ok',
        message: '注册成功'
      })
    })
  })
})
4 . 对登录接口进行改造
app.post('/api' ,(req, res)=>{
  const body = req.body
  // 查询登录用户名/密码数据库是否存在,并匹配
  let sqlapi = 'select * from ev_users where username = ? && password = ?'
  sql.query(sqlapi, [body.username, body.password], (err,result)=>{
    if (err) return res.cc('服务端错误')
    if (!result.length) return res.cc('用户名/密码错误')
    res.send({
      status: '200',
      data:'ok',
      message:'登录成功'
    })
  })
})
5 . 对查询的接口进行改造
app.get('/select', (req, res)=>{
  const body = req.query; 
  // 根据条件查询数据库表单的数据
  const sqldel = 'select * from ev_users where id >= 0' 
  sql.query(sqldel, (err,result)=>{
    if(err) return res.cc('服务端错误')
    if(!result.length) return res.cc('查询失败')
      res.send({
        status: 200,
        data: result,
        message: '查询成功'
    })
  })
})
6 . 对更新接口进行改造
app.post('/update', (req, res)=>{
  const body = req.body;
  // 根据条件查询数据库表单的数据
  let sqlsel = 'select * from ev_users where id = ?'
  sql.query(sqlsel, body.id, (err,result)=>{
    if(err) return res.cc('服务端错误')
    if(!result.length) return res.cc('查询失败/没有该id参数')
    // 更新字段
    let sqlupt = 'update ev_users set ? where id = ?'
    sql.query(sqlupt, [body, body.id],(err,result)=>{
      if(err) return res.cc('服务端错误')
      // 影响条数为0则为失败
      if(!result.affectedRows) return res.cc('更新失败')
      res.send({
        status: 200,
        data: 'ok',
        message: '更新成功'
      })
    })
  }) 
})
7 . 对删除接口进行改造
app.post('/delete', (req, res)=>{
  const body = req.body; 
  // 删除数据
  const sqldel = 'delete from ev_users where username = ?' 
  sql.query(sqldel,body.username,(err,result)=>{
    if(err) return res.cc(err)
    // result.affectedRows 查询受影响行数
    if(!result.affectedRows) return res.cc('该数据不存在/已删除')
    res.send({
      status: 200,
      data: 'ok',
      message: '删除成功'
    })
  })
})

3 . 最后附上完整代码

const express = require('express');
const cors = require('cors');
// 导入 mysql 模块
const mysql = require('mysql');

const app = express();
// 建立与 MySQL 数据库的连接关系
const sql = mysql.createPool({
  host: '127.0.0.1', // 数据库的 IP 地址
  user: 'root', // 登录数据库的账号
  password: 'root', // 登录数据库的密码
  database: 'my_users' // 指定要操作哪个数据库
})

// 处理跨域中间件
app.use(cors())
// 处理JSON表单格式中间件
app.use(express.json());
// 处理application/x-www-form-urlencoded表单格式的中间件
app.use(express.urlencoded({ extended: false }))

// 错误级别中间件
app.use((req,res,next)=>{
  res.cc = function(err, status = 201){
    res.send({
      status,
      data:"操作失败",
      message: err
    })
  }
  next()
})
// 注册接口
app.post('/user', (req, res)=>{
  const body = req.body
  // 查询数据库 *(所有) 表单为 ev_users 里 所有username   ? 为占位符代表条件
  const query = 'select * from ev_users where username=?'
  // ()  第一位为sql语句   第二位为占位符的条件
  sql.query(query, body.username,(err, result)=>{
    // err 为执行错误信息    result为数据
    if (err) return res.cc(err);
    // 判断影响行数  能查询到证明数据库表单里存在这个值
    if(result.length > 0) return res.cc('用户名已存在')
    // 插入数据
    const sqlint = 'insert into ev_users set ?'
    sql.query(sqlint, {username: body.username, password:body.password} ,(err,result) => {
      if(err) return res.cc(err)
      if(!result.affectedRows) return res.cc('注册失败')
      res.send({
        status: 200,
        data: 'ok',
        message: '注册成功'
      })
    })
  })
})

// 登录接口
app.post('/api' ,(req, res)=>{
  const body = req.body
  // 查询登录用户名/密码数据库是否存在,并匹配
  let sqlapi = 'select * from ev_users where username = ? && password = ?'
  sql.query(sqlapi, [body.username, body.password], (err,result)=>{
    if (err) return res.cc('服务端错误')
    if (!result.length) return res.cc('用户名/密码错误')
    res.send({
      status: '200',
      data:'ok',
      message:'登录成功'
    })
  })
})

// 查询接口
app.get('/select', (req, res)=>{
  const body = req.query; 
  // 根据条件查询数据库表单的数据
  const sqldel = 'select * from ev_users where id >= 0' 
  sql.query(sqldel, (err,result)=>{
    if(err) return res.cc('服务端错误')
    if(!result.length) return res.cc('查询失败')
      res.send({
        status: 200,
        data: result,
        message: '查询成功'
    })
  })
})

// 更新接口
app.post('/update', (req, res)=>{
  const body = req.body;
  // 根据条件查询数据库表单的数据
  let sqlsel = 'select * from ev_users where id = ?'
  sql.query(sqlsel, body.id, (err,result)=>{
    if(err) return res.cc('服务端错误')
    if(!result.length) return res.cc('查询失败/没有该id参数')
    // 更新字段
    let sqlupt = 'update ev_users set ? where id = ?'
    sql.query(sqlupt, [body, body.id],(err,result)=>{
      if(err) return res.cc('服务端错误')
      // 影响条数为0则为失败
      if(!result.affectedRows) return res.cc('更新失败')
      res.send({
        status: 200,
        data: 'ok',
        message: '更新成功'
      })
    })
  }) 
})

// 删除接口
app.post('/delete', (req, res)=>{
  const body = req.body; 
  // 删除数据
  const sqldel = 'delete from ev_users where username = ?' 
  sql.query(sqldel,body.username,(err,result)=>{
    if(err) return res.cc(err)
    // result.affectedRows 查询受影响行数
    if(!result.affectedRows) return res.cc('该数据不存在/已删除')
    res.send({
      status: 200,
      data: 'ok',
      message: '删除成功'
    })
  })
})

// 启动服务器
app.listen(80, () => {
  console.log('express server running at http://127.0.0.1')
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值