Skip to content
本页目录

用node(express)连接mysql快速写一个增删改查接口

要求: 可以连接数据库,能增删改查 前提: 下载mysql,navicat,node

image-20230407182311610

> 准备工作

1.1.下载mysql

下个phpstudy然后点击启动

image-20230405231826785

1.2.下载navicat

数据库的可视化操作

image-20230405232116041

新建数据库

image-20230407175045297

先新建名为vueadmin的数据库再执行如下sql语句

sql
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for posts
-- ----------------------------
DROP TABLE IF EXISTS `posts`;
CREATE TABLE `posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `body` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
-- Records of posts
-- ----------------------------
INSERT INTO `posts` VALUES ('1', 'test21', 'test2body211');
INSERT INTO `posts` VALUES ('3', 'jscsnb', 'www.jscs.vip');

1.3.下载node

选择稳定版直接下载安装即可

Node.js 中文网 (nodejs.cn)

> 写node接口

新建一个目录

输入

shell
npm init -y

1.添加依赖

npm i cors express mysql

解释

  • cors 处理跨域
  • express node的框架,方便操作
  • mysql 连接mysql的依赖包

2.新建server.js

js
const express = require('express') // 引入 express
const app = express() // 实例一个 express 对象
app.use(require('cors')()) // 解决跨域
app.use(express.json()) // express处理json数据

const mysql = require('mysql'); //调用 MySQL模块

// 创建连接
var db = mysql.createConnection({
  host: 'localhost',
  user: 'root', // 用户名
  password: '123456', // 密码
  database: 'vueadmin',// 数据库名
  port: 3306   // 端口号
})
db.connect( (err) => {
  if(err) throw err;
  console.log('连接成功');
})
setInterval(function () {
  db.query('SELECT 1');
}, 5000);

// 监听端口3000
app.listen(3000, () => {
  console.log('http://localhost:3000/')
})

命令行执行

node server.js

出现如下即连接成功

image-20230405233531104

3.返回页面


app.get('/', (req, res) => {
  res.send('技术成神')
})

打开浏览器,可以看到如下技术成神文字

image-20230407174447030

4.nodejs进行sql操作

4.1.获取全部文章列表

执行SELECT * FROM posts

node实现的代码

js
// 获取文章列表
app.get('/api/article', (req, res) => {
  let sql = "SELECT * FROM posts";
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      console.log(result);
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

4.2新增文章

执行如下sql语句

sql
INSERT INTO `posts` (`title`, `body`) VALUES ('a', 'b')

node实现的代码

js
// 新增文章
app.post('/api/article', (req, res) => {
  let data = req.body;
  let sql = "INSERT INTO posts SET ?";
  db.query(sql, data, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      console.log(result);
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

4.3删除某个文章

执行sql语句

sql
DELETE FROM `posts` WHERE (`id`='12')

node实现代码

js
// 删除文章
app.delete('/api/article/:id', (req, res) => {
  let sql = `DELETE FROM posts WHERE id= ${req.params.id}`;
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      console.log(result);
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

4.4修改文章

执行如下sql语句

sql
UPDATE `posts` SET `title`='jscs1' WHERE (`id`='3')

node实现代码

js
// 修改文章
app.put('/api/article/:id', (req, res) => {
  let newTitle = req.body.title;
  let newBody = req.body.body;
  let sql = `UPDATE posts SET title = '${newTitle}',body = '${newBody}' WHERE ID = ${req.params.id}`
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

4.5模糊查询文章标题

执行如下sql语句

sql
SELECT * FROM posts WHERE title like '%j%'

node实现代码

js
// 获取文章列表中的标题
app.get('/api/article/title/:title', (req, res) => {
  let sql = "SELECT * FROM posts WHERE title like '%"+ req.params.title+"%'";
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      console.log(result);
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

> 整体代码

server.js

js
const express = require('express') // 引入 express
const app = express() // 实例一个 express 对象
app.use(require('cors')()) // 解决跨域
app.use(express.json()) // express处理json数据

const mysql = require('mysql'); //调用 MySQL模块

// 创建连接
var db = mysql.createConnection({
  host: 'localhost',
  user: 'root', // 用户名
  password: '123456', // 密码
  database: 'vueadmin',// 数据库名
  port: 3306   // 端口号
})
db.connect( (err) => {
  if(err) throw err;
  console.log('连接成功');
})
setInterval(function () {
  db.query('SELECT 1');
}, 5000);


app.get('/', (req, res) => {
  res.send('技术成神')
})

// 新增文章
app.post('/api/article', (req, res) => {
  let data = req.body;
  let sql = "INSERT INTO posts SET ?";
  db.query(sql, data, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      console.log(result);
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

// 获取文章列表
app.get('/api/article', (req, res) => {
  let sql = "SELECT * FROM posts";
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      console.log(result);
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

// 获取文章列表中的标题
app.get('/api/article/title/:title', (req, res) => {
  let sql = "SELECT * FROM posts WHERE title like '%"+ req.params.title+"%'";
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      console.log(result);
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

// 删除文章
app.delete('/api/article/:id', (req, res) => {
  let sql = `DELETE FROM posts WHERE id= ${req.params.id}`;
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      console.log(result);
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

// 获取文章详情
app.get('/api/article/:id', (req, res) => {
  let sql = `SELECT * FROM posts WHERE id= ${req.params.id}`
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

// 修改文章
app.put('/api/article/:id', (req, res) => {
  let newTitle = req.body.title;
  let newBody = req.body.body;
  let sql = `UPDATE posts SET title = '${newTitle}',body = '${newBody}' WHERE ID = ${req.params.id}`
  db.query(sql, (err, result) => {
    if(err) {
      console.log(err);
      res.send("error")
    } else {
      res.json({
        code: 20000,
        data: result
      })
    }
  })
})

// 监听端口3000
app.listen(3000, () => {
  console.log('http://localhost:3000/')
})