node.js + mysql实现基本的增删改查功能(保姆级教程---2优化版)

news/2025/3/16 19:27:03/文章来源:https://www.cnblogs.com/sharenotes/p/18233809

node.js + mysql实现基本的增删改查(保姆级教程---2优化版)

上一个实现对增删改查功能都写在同一个文件里,代码过于冗余,我认为可以优化,分开写在不同文件里面,使得更加直观。

废话不多说,直接进入主题:

  • 对之前的代码进行抽离:

  • db.js文件(用于数据库的连接,并导出连接供其他模块使用):

const mysql = require("mysql"); // 引入mysql模块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("数据库连接成功!");}
});
// 导出connection对象
module.exports = connection;

添加功能

add.js文件(创建express应用实例,处理添加数据的请求):
const express = require("express");
const connection = require("./db");
const app = express();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("添加成功");}});
});module.exports = app;
  • 进入项目根目录,执行命令node index.js运行项目,浏览器输入http://localhost:3001/add,添加详细成功

  • 查看数据库:

查询

find.js文件(创建express应用实例,处理查询数据请求)
const express = require("express");
const connection = require("./db");
const app = express();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 });}});
});module.exports = app;
  • 进入项目根目录,执行命令node index.js运行项目,浏览器输入http://localhost:3001/find,显示出查询的信息

修改功能

update.js文件(创建express应用实例,处理更新数据的请求)
const express = require("express");
const connection = require("./db");
const app = express();app.get("/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("修改成功");});});module.exports = app;
  • 进入项目根目录,执行命令node index.js运行项目,浏览器输入http://localhost:3001/update/4,显示“修改成功”,然后查看mysql数据库

删除功能

delete.js文件(创建express应用实例,除了删除数据的请求)
const express = require("express");
const connection = require("./db");
const app = express();app.get("/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("删除成功");});});module.exports = app;
  • 进入项目根目录,执行命令node index.js运行项目,浏览器输入http://localhost:3001/delete/2,显示“删除成功”,然后查看mysql数据库
index.js文件(整个应用的入口文件,负责启动所有的express实例对象。通过引入其他模块,将它们注册到主应用实例中,从而形成完整的服务)
const express = require("express");
const app = express();
const addApp = require("./add");
const findApp = require("./find");
const updateApp = require("./update");
const deleteApp = require("./delete");app.use(addApp);
app.use(findApp);
app.use(updateApp);
app.use(deleteApp);app.listen(3001, () => {console.log("服务在3001端口已开启...");
});

通过这种方式,可以将代码拆分到多个模块中,使得每个模块都有清晰的职责,也更容易进行维护与测试。但是同时也增加了文件的数量,使得模块间通信较为复杂。

总结:

对于大型项目和开发团队来说,将代码拆分为多个模块文件通常更好。这样可以使代码更易于管理、维护和拓展,同时提高了代码可读性与可维护性。毕竟将所有代码放在同一个文件中可能会导致文件过于庞大,难以理解和维护,不利于团队复用。但是呢,一些小型项目或者简单的脚本中,将所有代码放在同一个文件中也许会更方便,因为能降低一些模块化带来的复杂性,也能更快捷地开始编写简单的程序。因此,最后选择哪种方式还要取决于团队具体的情况。

结尾:

那么你觉得这个小的增删改查项目更适用于哪个方法呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/720532.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚幻中实现本地双人的输入设备分别控制需要的Pawn

想要实现双人成行游戏中的双输入设备(双输入设备指的是一个键鼠和一个手柄,或者两个手柄)分别控制玩家1和玩家2,同时可以动态插拔设备切换对应的Pawn的控制权;本文是对探索并实现此功能的一个解决思路记录。1、前期准备和知识点梳理 1.1 本地多玩家 LocalPlayer 平常我们运…

HiPPO: Recurrent Memory with Optimal Polynomial Projections

目录概Motivation代码Gu A., Dao T., Ermon S., Rudra A. and Re C. HiPPO: Recurrent memory with optimal polynomial projections. NIPS, 2021.概 看下最近很火的 Mamba 的前身. 本文其实主要介绍的是一个如何建模历史信息在正交基上的稀疏的变化情况.Motivation对于一个函数…

存储引擎及特点、约束条件、严格模式、基本字段类型(整型、浮点型、字符串、日期时间、枚举和集合)

【一】存储引擎在平常我们处理的文件格式有很多,并且针对不同的文件格式会有对应不同的存储方式和处理机制 针对不同的数据应该有对应不同的处理机制 存储引擎就是不同的处理机制。# 查看所有引擎 show engines;四种主要的存储引擎 (1)Innodb引擎是MySQL5.5版本之后的默认存…

sickos1.1-cms

sickos1.1-cms主机发现和nmap扫描 nmap -sn 192.68.56.0/24靶机ip:192.168.56.105 nmap -sT --min-rate 10000 192.168.56.105PORT STATE SERVICE 22/tcp open ssh 3128/tcp open squid-http 8080/tcp closed http-proxynmap -sT -sV -sC -O -p22,3128,8080 192.16…

自动化类级别前后置和函数级别前后置的区别

一、函数级别的前后置,格式如下: 二、类函数级别的前后置如下: 三、总结: 1、函数级别的用例执行一个用例时,都会执行一遍;类级别的前后置不管用例是多少个,只在执行用例时执行一次。 2、所以根据用例的需要,适当的选择是类级别的前后置还是函数级别的前置后。

Linux容器架构

1.Iaas:基础设施即服务 Infrastructure-as-a-Service Paas:平台即服务 Platform-as-a-Service Saas:软件即服务 Software-as-a-Service Caas:容器即服务 介于IAAS和PAAS IAAS,PAAS,SAAS这些服务,用于帮助人们更快实现目标(搭建环境,使用产品) 从左到右,人们需要管理与维护的地方…

内网穿透教程

内网穿透教程 本文介绍如何使用 FRP(Fast Reverse Proxy)工具实现内网穿透,包括配置 Azure 公网 IP、安装 Docker 和 FRP,以及在内网服务器上配置和运行 FRP 客户端。 一、配置公网 IP 1. 申请 Azure 公网 IP登录到 Azure 门户。 创建一个新的虚拟机实例,建议使用1G内存的…

CFAR检测

目标检测:1幅海上SAR图像和1幅近海光学图像,选择其中一幅检测出图像上的舰船(包括停靠码头)目标。 检测步骤图像裁剪:把原图裁剪成 448 * 640 的 patch,检测每个小 patch 中的舰船目标。读取图像:读取每个图像,并将其转换为灰度图。为了方便处理边缘区域,用补零的方式对…

内网穿透详细教程

内网穿透详细教程 本文介绍如何使用 FRP(Fast Reverse Proxy)工具实现内网穿透,包括配置 Azure 公网 IP、安装 Docker 和 FRP,以及在内网服务器上配置和运行 FRP 客户端。 一、配置公网 IP 1. 申请 Azure 公网 IP登录到 Azure 门户。 创建一个新的虚拟机实例,建议使用1G内…

兴达易控232自由转profinet网关接扫码枪配置及测试案例

232自由口转Profinet网关(XD-PNR100/300)的主要功能就是将具有RS232接口的设备(如扫码枪、打印机、传感器等)接入到Profinet网络中,从而实现了传统设备与现代化工业以太网之间的无缝通信和数据交换。兴达易控232自由口转profinet网关接扫码枪配置及测试案例 232自由口转Pr…

杭州出租车行驶轨迹数据空间时间可视化分析|附代码数据

原文链接:http://tecdat.cn/?p=7324 最近我们被客户要求撰写关于出租车的研究报告,包括一些图形和统计输出 城市化带来的道路拥堵、出行耗时长等交通问题给交管部门带来了巨大的挑战 ▼ 通过安装在出租车上的GPS设备,可以采集到大量的轨迹数据,从而帮助我们分析人们出行信…

【专题】2024客户端游戏市场营销发展报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p=36402 原文出处:拓端数据部落公众号 报告合集显示,中国客户端游戏市场在2023年创新高,达到662.83亿元,表明精品化和跨端生态趋势对市场的推动作用。报告合集强调客户端游戏的独特优势,如精品内容、视听体验和操作反馈等,促进了市场稳定增…