node.js + mysql实现基本的增删改查功能(保姆级教程---1)
node.js + mysql实现基本的增删改查(保姆级教程---1)
工具:
sqlyog可视化工具,vscode,nodejs环境(我的node.js版本号是 18.16.0)
前提条件:
电脑上要有node.js、npm、mysql服务器、可视化工具(navicat或sqlyog都行)
步骤:
- 新建文件夹node-mysql-cruid(根目录),终端打开该目录
- 初始化项目:
npm init -y
(运行这个命令,npm会在当前目录下生成一个默认的package.json文件,而无需手动输入任何信息。该配置文件中包含了项目名称、版本、描述、开发时所用到的包等信息) - 安装依赖:
npm i express mysql
(会发现文件根目录下出现了node_modules和package-lock.json文件。前者用于存储项目的依赖包,后者用于记录依赖的确切版本信息,以确保在不同环境中的一致性和可重复性) - 直接在sqlyog可视化工具中创建数据库node_test:
- 然后在该数据库下建立users数据表:
use node_test;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
- 随便在数据库里添加几条数据,当然你也可以不添加
- 在根目录下建立db.js文件,用于连接mysql数据库,并实现对mysql数据库的信息进行增删改查操作:
const mysql = require("mysql"); // 引入mysql模块
const express = require("express"); //引入express模块
const app = express(); //创建app实例对象
const connection = mysql.createConnection({
host: "localhost", //主机名(默认都是localhost)
user: "root", //用户名
password: "123456", //密码
database: "node_test", //数据库名
});
// 测试连接
connection.connect((err) => {
if (err) {
console.log("数据库连接失败,原因:", err);
} else {
console.log("数据库连接成功!");
// 开启服务器监听
app.listen(3001, () => {
console.log("服务在3001端口已开启...");
});
}
});
- 终端运行db.js,测试数据库是否连接成功:
node db.js
- 然后对数据库的信息进行增删改查操作(都写在开启服务器监听前):
添加功能
// 添加功能
app.get('/add', (req, res) => {
const sqlStr = "INSERT INTO users(name, email) VALUES ('金离瞳', 'jwz@qq.com')";
connection.query(sqlStr, (err, result) => {
if (err) {
console.log("SQL语句执行失败,原因:", err);
res.send('添加失败');
} else {
console.log("SQL语句执行成功");
res.send('添加成功');
}
});
});
- 然后终端运行该文件:
- 浏览器访问http://localhost:3001/add,显示“添加成功”
- 查看数据库,可见用户信息已成功添加到数据库中
查询功能
// 查询功能
app.get('/find',(req,res) => {
const sqlStr = "select * from users";
connection.query(sqlStr,(err,result) => {
if (err) {
console.log("SQL语句查询功能执行失败,原因:", err);
res.status(500).send("查询失败");
} else {
console.log("SQL语句查询功能执行成功");
res.status(200).json({message:'查询成功',data:result})
}
})
})
- 然后终端运行该文件:
- 浏览器访问http://localhost:3001/find,显示查询的结果:
{"message":"查询成功","data":[{"id":1,"name":"罗丽","email":"yllgz@qq.com"},{"id":2,"name":"金离瞳","email":"jwz@qq.com"},{"id":3,"name":"金离瞳","email":"jwz@qq.com"}]}
修改功能
// 修改功能
app.put("/update/:id", (req, res) => {
const userId = req.params.id;
console.log("收到PUT请求的用户ID为:", userId);
const newName = "陆瑾年"; // 修改之后的名字
const newEmail = "shmily@qq.com";
// 定义一个查询函数
const sqlStr = "update users set name = ?, email = ? where id = ?";
connection.query(sqlStr, [newName, newEmail, userId], (err, result) => {
if (err) {
console.error("sql语句修改功能失败,原因:", err);
return res.status(500).send("修改失败");
}
console.log("sql语句修改功能成功");
return res.status(200).send("修改成功");
});
});
- 在这里注意了,浏览器地址栏通常只支持get请求,put输入是无法进行正常执行的,在运行代码前,为了测试put请求是否能够正常运行,我在postman里进行测试:
-
显而易见,代码没有问题。(如果没有postman也没关系,往下看:)
-
但是呢,我们并没有将一些增删改查的功能显示在页面上,因此为了测试代码是否能够成功修改数据库里面的信息,将上述代码里的
post
请求改为get
:
app.get("/update/:id", (req, res)...后面代码和上述一样
- 然后使用运行代码,在浏览器输入框输入:http://localhost:3001/update/2,可以看到显示“修改成功”,终端里也显示的修改成功
- 查看数据库:
删除功能
// 删除功能
app.delete("/delete/:id", (req, res) => {
const userId = req.params.id;
console.log("收到delete请求的用户ID为:", userId);
// 定义一个查询函数
const sqlStr = "delete from users where id = ?";
connection.query(sqlStr, [userId], (err, result) => {
if (err) {
console.error("sql语句删除功能失败,原因:", err);
return res.status(500).send("修改失败");
}
console.log("sql语句删除功能成功");
return res.status(200).send("删除成功");
});
});
- 用postman进行测试:
-
测试通过,代码无误。
-
和修改基本上一样喽,浏览器输入框也不支持delete请求,为了更好方便我们测试,将上述代码的delete换成get,其余代码一样
app.get("/delete/:id", (req, res)...
- 然后终端中运行代码,浏览器输入http://localhost:3001/delete/2,显示"删除成功"
- 查看数据库:
末尾
淡然置之有话要说:
- 如果在进行增删改查功能时,发现后台数据库没有变化,何不尝试刷新一下呢?
- 后面两个(修改和删除)操作只是为了更好进行代码的测试与功能的实现,才将请求(update和delete)改成了get,实际开发中可不能乱来呦~
- 尤其是添加功能,在终端运行文件的时候,添加实现后一定要注释掉再去测试功能相关的代码,不然每经一次运行文件,数据库就会被添加好多相同的用户信息...
- 如果哪有问题的话,即使指出哦,我在评论区等你啦啦啦~~