Appearance
用node(express)连接mysql快速写一个增删改查接口
要求: 可以连接数据库,能增删改查 前提: 下载mysql,navicat,node
> 准备工作
1.1.下载mysql
下个phpstudy然后点击启动
1.2.下载navicat
数据库的可视化操作
新建数据库
先新建名为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接口
新建一个目录
输入
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
出现如下即连接成功
3.返回页面
app.get('/', (req, res) => {
res.send('技术成神')
})
打开浏览器,可以看到如下技术成神文字
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/')
})