node.js+express+mysql+axios 实现对数据的增删查改完美方案
准备工作
提示:安装好 mysql数据库,node.js
完成图

1.创建数据库及创建数据表
create database books;
create table newbooks
(id INT(255) AUTO_INCREMENT PRIMARY KEY,
book_name VARCHAR(255),
book_author VARCHAR(255),book_desc
VARCHAR(255));
insert into newbooks values (1,'三国演义','罗贯中','中国四大名著1');
insert into newbooks values (2,'水浒传','施耐庵','中国四大名著2');
insert into newbooks values (3,'红楼梦','曹雪芹','中国四大名著3');
insert into newbooks values (4,'西游记','吴承恩','中国四大名著4');

2. 创建文件夹及安装express,mysql等依赖
npm init -y
npm i -S express
npm install body-parser --save
npm install cors --save
3. 创建一个db.js 封装一个数据库操作文件(可直接复制修改自己信息即可用)
const mysql = require('mysql')
exports.base = (sql,data,callback) => {
const connection = mysql.createConnection({
host : 'localhost',
user : '',
password : '',
database : 'books'
});
connection.connect();
connection.query(sql,data, function (error, results, fields) {
if (error) throw error;
callback(results);
});
connection.end();
}
4.创建增删查改的js文件
const mysql = require('mysql')
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const db = require('./db.js');
const cors = require('cors');
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(cors());
app.post('/books', (req,res) => {
let param = req.body;
let sql = 'insert into newbooks set ?';
let data = {
book_name: param.book_name,
book_author: param.book_author,
book_desc: param.book_desc
}
db.base(sql,data,(results) => {
res.json('创建成功!');
})
});
app.get('/books',(req,res) => {
let sql = 'select * from newbooks'
let data = null
db.base(sql,data,(results) => {
res.json(results)
})
})
app.get('/books/:id',(req,res) => {
let sql = 'select * from newbooks where id=?'
let data = [req.params.id]
db.base(sql,data,(results) => {
res.json(results)
})
})
app.delete('/books/:id',(req,res) => {
let sql = 'delete from newbooks where id= ?'
let data = [req.params.id]
db.base(sql,data,(results) => {
res.json('删除成功!')
})
})
app.put('/books/edit/:id',(req,res) => {
let sql = 'update newbooks set book_name= ?,book_author= ?,book_desc= ? where id= ?'
let data = [req.body.book_name,req.body.book_author,req.body.book_desc,req.body.id]
db.base(sql,data,(results) => {
res.json('修改成功!')
})
})
app.listen(3000, () => {
console.log('running...');
})
5.在文件夹创建一个测试的THML文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.grid table {
width: 500px;
text-align: center;
border-collapse: collapse;
}
.grid tr th {
background-color: orange;
}
.grid tr td {
border: 1px dashed orange;
}
h1 {
margin-left: 15%;
}
.book {
border-bottom: 1px dashed greenyellow;
background-color: orange;
width: 500px;
padding: 10px 0px 10px 0px;
}
.grid {
margin-left: 30%;
}
</style>
</head>
<body>
<div id="app">
<div class="grid">
<div>
<h1>图书管理</h1>
<div class="book">
<div>书名:<input type="text" v-model="goods.book_name" /></div>
<div>作者:<input type="text" v-model="goods.book_author" /></div>
<div>描述:<input type="text" v-model="goods.book_desc" /></div>
<div><button type="button" @click="handle">提交</button></div>
<div><button type="button" @click="updateBtn">修改</button>
</div>
</div>
</div>
<table>
<tr>
<th>编号</th>
<th>名称</th>
<th>作者</th>
<th>描述</th>
<th>操作</th>
</tr>
<tr :key='item.id' v-for="item in books">
<td>{{item.id}}</td>
<td>{{item.book_name}}</td>
<td>{{item.book_author}}</td>
<td>{{item.book_desc}}</td>
<td><a href="" @click.prevent="editBtn(item.id)">编辑</a>
<span>|</span>
<a href="" @click.prevent="deleteBook(item.id)">删除</a></td>
</tr>
</table>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script type="text/javascript">
axios.defaults.baseURL = 'http://localhost:3000';
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
const app = new Vue({
el: '#app',
created() {
this.getBooks()
},
data: {
books: [],
goods: {
id: '',
book_name: '',
book_author: '',
book_desc: ''
}
},
methods: {
// 获取数据表所有信息
async getBooks() {
const {
data: res
} = await axios.get('/books')
this.books = res
console.log(this.books);
},
// 添加数据
async handle() {
const {
data: res
} = await axios.post('/books', this.goods)
this.getBooks()
},
//删除数据
async deleteBook(id) {
const {
data: res
} = await axios.delete(`/books/${id}`)
console.log(res);
this.getBooks()
},
//编辑数据 通过id获取数据
async editBtn(id) {
const {
data: res
} = await axios.get(`/books/${id}`)
console.log(res);
this.goods = res[0]
},
//修改按钮 时完成修改
async updateBtn() {
const {
data: res
} = await axios.put('/books/edit/' + this.goods.id, this.goods)
this.getBooks()
}
}
})
</script>
</body>
</html>
谢谢大家点赞! js 和 HTML代码可直接使用。