如何优雅的《用Node+MySQL+express实现增删改查》

首先感谢这个小姐姐的视频:bilibili-特困女程序员

然后就是附上源码:apiLearn

 

〇.附上目录结构:

一.开发准备

  1. Node安装及配置

  2. MySQL的安装及配置

  3. 数据库可视化工具:Navcat、

  4. 接口测试工具:Postman

  5. express

    • 安装:npm install express -g

    • npm install -g express-generator (express 4.x版本后,把generator 分离出来了)

以上安装及配置,自己解决

二.创建并初始化项目

1.创建项目:express <项目名称>

express apiLearn 创建后的目录是这样的

 

2.需要的依赖

接下来vsCode打开该项目,进行安装所需要的依赖 npm install

等待安装成功后,就可以启动项目:npm start

浏览器访问 :localhost:3000 (项目默认3000端口,具体查看 bin/www)

三.编码

项目初始化已完成,接下来就开始优雅的敲代码了~

1.改写入口文件

入口文件之前是在bin/www的目录下,现在我们将它改成在app.js下,并删除bin目录

现在用 node app.js  启动项目 访问 localhost:3000 依然能访问

2.数据库安装及创建

1.安装mysql:npm install mysql --save

2.利用Navcat创建一个数据库并新建一张表,并添加一些数据,待会儿要用到

3.连接数据库

接下来就是正式编码了,

在更目录下创建utils文件夹,并创建dbconfig.js来连接数据库;

const mysql = require('mysql');

// 数据库配置
module.exports = {
    config: {
        host: "localhost",
        port: "3306",
        user: "root",
        password: "123456",
        database: "demo"
    },
    // 连接数据库,使用连接池的方式
    // 连接池对象
    sqlConnect: function (sql, sqlArr, callback) {
        var pool = mysql.createPool(this.config);
        pool.getConnection((err, conn) => {
            console.log("数据库连接池");
            if (err) {
                console.log("连接失败");
                return;
            } else {
                console.log("连接成功...");
            }
            // 事件驱动回调
            conn.query(sql, sqlArr, callback);
            // 释放连接
            conn.release();
        })
    }
}

4.写接口

注意:post请求需要安装 body-parser 插件,npm install body-parser --save,并在入口文件引入

正式进入到写接口环节

  • 在更目录下新建 controller/students.js

附上代码 :

var dbConfig = require('../utils/dbconfig')

// 查
getStudent = (req, res) => {
    var sql = "select * from students";
    var sqlArr = [];
    var callBack = (err, data) => {
        if (err) {
            res.send({
                code: 400,
                msg: '获取出错!',
                'list': data
            })
        } else {
            res.send({
                code: 200,
                msg: 'success',
                'list': data
            })
        }
    }
    dbConfig.sqlConnect(sql, sqlArr, callBack);
}
// 根据id查
getStudentId = (req, res) => {
    let { id } = req.query;
    var sql = "select * from students where id = ?";
    var sqlArr = [id];
    var callBack = (err, data) => {
        if (err) {
            res.send({
                code: 400,
                msg: '获取出错!',
            })
        } else {
            res.send({
                code: 200,
                msg: 'success',
                'list': data
            })
        }
    }
    dbConfig.sqlConnect(sql, sqlArr, callBack);
}
// 增加
addStudent = (req, res) => {
    let { head_img, name, age, sex, intro } = req.body;
    console.log(req.body)
    var sql = "insert into students(id,head_img,name,age,sex,intro) value (?,?,?,?,?,?)";
    var sqlArr = [Math.random().toString(36).substr(-10), head_img, name, age, sex, intro];
    var callBack = (err, data) => {
        if (err) {
            res.send({
                code: 400,
                msg: '添加失败',
            })
        } else {
            res.send({
                code: 200,
                msg: '添加成功',
            })
        }
    }
    dbConfig.sqlConnect(sql, sqlArr, callBack);
}
// 删除
// 增加
deleteStudent = (req, res) => {
    let { id } = req.query;
    let sql = 'delete from students where id = ?'
    let sqlArr = [id]
    var callBack = (err, data) => {
        if (err) {
            res.send({
                code: 400,
                msg: '删除失败!!'
            })
        } else {
            res.send({
                code: 200,
                msg: '删除成功!!',
            })
        }
    }
    dbConfig.sqlConnect(sql, sqlArr, callBack);
}
// 修改
editStudent = (req, res) => {
    let { id,head_img,name,age,sex,intro } = req.body;
    let sql = 'update students set head_img=?,name=?,age=?,sex=?,intro=?where id = ?'
    let sqlArr = [head_img,name,age,sex,intro,id]
    var callBack = (err, data) => {
        if (err) {
            console.log(err)
            res.send({
                code: 400,
                msg: '更改失败!!'
            })
        } else {
            res.send({
                code: 200,
                msg: '更改成功!!',
            })
        }
    }
    dbConfig.sqlConnect(sql, sqlArr, callBack);
}
module.exports = {
    getStudent,
    getStudentId,
    addStudent,
    deleteStudent,
    editStudent
}  
  • 在更目录下新建routes/students.js

附上代码:

var express = require('express');
var router = express.Router();
const studentController = require('../controller/student')

/* GET users listing. */
//查
router.get('/all', studentController.getStudent);
//根据id查
router.get('/byId', studentController.getStudentId);
//增
router.post('/add', studentController.addStudent);
//删
router.delete('/delete', studentController.deleteStudent);
//更新
router.post('/edit', studentController.editStudent);

module.exports = router;
  • 在入口文件中引入

附上代码

四.测试

这里用postman来测试接口,具体怎么测试这里就不测试了。

 

最终就实现了增删改查功能啦~~~~~~~~

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值