1.安装express
在项目所处的目录中,运行如下的终端命令,即可将 express 安装到项目中使用:
npm i express@4.17.1
2.创建基本的 Web 服务器
// 导入express
const express = require('express');
// 创建web服务器
const app = express();
//todo:利用mysql模块进行数据的增 删 查 改 代码
// 调用app.listen(端口号,启动成功后的回调函数),启动服务器
app.listen(80, () => {
console.log('http://127.0.0.1');
});
3.安装操作 MySQL 数据库的第三方模块(mysql)
mysql 模块是托管于 npm 上的
第三方模块
。它提供了在 Node.js 项目中
连接
和
操作
MySQL 数据库的能力。
想要在项目中使用它,需要先运行如下命令,将 mysql 安装为项目的依赖包:
npm i mysql
4.配置 mysql 模块
在使用 mysql 模块操作 MySQL 数据库之前,
必须先对 mysql 模块进行必要的配置
,主要的配置步骤如下:
//导入mysql
const mysql = require('mysql');
//链接数据库
const conn = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'web66',
});
5.查询 users 表中所有的数据:
app.get('/getUser', (req, res) => {
//创建sql语句 查询users表中所有的用户信息
const sqlStr1 = 'select * from users';
//执行sql语句
conn.query(sqlStr1, (err, result) => {
// 如果连接失败或者sql语句写错
if (err) return console.log('获取数据失败' + err.message);
// 如果获取数据成功,向客户端响应数据
res.send({
status: 0,
msg: '获取数据成功',
data: result
});
});
});
6.向 users 表中新增数据:
app.post('/addUser', (req, res) => {
// 获取客户端提交过来的数据
const data = req.body;
// 构建sql语句 其中英文的 ? 表示占位符
const sql = 'insert into users set ?';
// 执行sql
conn.query(sql, data, (err, result) => {
// 判断sql是否执行失败
if (err) return console.log(err.message);
// 判断受影响的行数(affectedRows) 看其值是不是1,如果不是1表示失败 如果是1成功
if (result.affectedRows !== 1) return console.log('数据写入失败');
// 如果写入成功 向客户端响应数据
res.send({
status: 0,
msg: '数据写入成功'
});
});
});
7.更新users表中的数据:
app.post('/updateUser', (req, res) => {
const body = req.body;
const sql = 'update users set ? where id=?';
// 调用conn.query()执行SQL语句中有多个占位符,则必须使用数组为每个占位符指定具体的值
//如果SQL语句中只有一个占位符,则可以省略数组
conn.query(sql, [body, body.id], (err, result) => {
if (err) return console.log(err.message);
if (result.affectedRows !== 1) return console.log('数据更新失败');
res.send({
status: 0,
msg: '数据更新成功'
});
});
});
8.删除数据,推荐根据 id 这样的唯一标识,来删除对应的数据:
app.get('/deleteUser/:id', (req, res) => {
const id = req.params.id;
const sql = 'delete from users where id=?';
conn.query(sql, id, (err, result) => {
if (err) return console.log(err.message);
if (result.affectedRows !== 1) return console.log('数据删除失败');
res.send({
status: 0,
msg: '数据删除成功'
});
});
});
9.标记删除:
使用 DELETE 语句,会把真正的把数据从表中删除掉。为了保险起见,
推荐使用
标记删除
的形式,来
模拟删除的动作
。
所谓的标记删除,就是在表中设置类似于
status
这样的
状态字段
,来
标记
当前这条数据是否被删除。
当用户执行了删除的动作时,我们并没有执行 DELETE 语句把数据删除掉,而是执行了 UPDATE 语句,将这条数据对应 的 status 字段标记为删除即可。
app.get('/deleteUser/:id', (req, res) => {
const id = req.params.id;
const sql = 'update users set status=0 where id=?';
conn.query(sql, id, (err, result) => {
if (err) return console.log(err.message);
if (result.affectedRows !== 1) return console.log('数据删除失败');
res.send({
status: 0,
msg: '数据删除成功'
})
})
})