❤Node04-操作本地数据库增删改查

2024-08-23 23:44

本文主要是介绍❤Node04-操作本地数据库增删改查,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

❤Nodejs 第四章(Node +Express操作本地数据库增删改查)

1、认识接口(Node.js RESTful API)

接下来我们先认识一些前置知识,看看Node.js里面的RESTful API是什么,如何帮助我们实现接口的

以下为 REST 基本架构的四个方法:

  • GET - 用于获取数据
  • PUT - 用于更新或添加数据
  • DELETE - 用于删除数据
  • POST - 用于添加数据

注:get和delete是在路径中传递数据,而post和put可以在request body中传递数据

2、查询用户列表 (/api/user--get查询 )

之前我们采用Node连接数据库并查询数据,现在我们使用本地的axios进行请求数据 本地进行调用

js// 获取用户
function getUserList(row) { axios.get('http://localhost:8888/api/user').then(res => {console.log(res, '/user/list');if (res.status == 200) {console.log(res,'res');tableData.value = res.data.data;}})
}

突然发现报错了:

分析报错我们发现是由于跨域访问引起的,前端设置允许跨域 在app.js之中添加这段代码

jsapp.all('*', function (req, res, next) {res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Headers", "X-Requested-With");res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");res.header("X-Powered-By", ' 3.2.1')res.header("Content-Type", "application/json;charset=utf-8");next();
});

app.js完整过程如下:

jsconst connection = mysql.createPool({host: 'localhost', // 数据库主机地址,如果是本地数据库则使用localhostuser: 'root', // 数据库用户名password: '', // 数据库密码database: 'nexus' // 要连接的数据库名
});const app = express();
//设置跨域访问
app.all('*', function (req, res, next) {res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Headers", "X-Requested-With");res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");res.header("X-Powered-By", ' 3.2.1')res.header("Content-Type", "application/json;charset=utf-8");next();
});app.get('/', (req, res) => {res.send('林太白数据库!');
});// 创建路由
app.get('/api/user/list', (req, res) => {// 查询数据库并返回数据connection.query('SELECT * FROM user', (err, results) => {console.log(err,'err');console.log(results,'results');if (err) {console.error('Error querying database:', err);res.status(500).json({ error: 'Internal server error' });return;}res.json({code:'200',data:results,});// res.json(results);});
});

重启服务器:

node app.js

查询成功!

3、增加用户 (/api/user--post新增 )

Mysql增加用户操作命令为

jsINSERT INTO user (name,sex) VALUES ('张三',1)

执行命令我们已经将数据添加进入数据库之中。

接下来我们在我们的Node里面进行一下添加

jsSql的插入语句为:
`INSERT INTO user (name, age) VALUES (?, ?)`

那我们手写的POST增加用户请求处理就是

js// 新增用户 POST 请求处理程序 
app.post('/api/user', (req, res) => {console.log(req.body);const { name, age } = req.body; // 从请求体中获取数据const values = [name, age];// 准备 SQL 插入语句const insertSql = `INSERT INTO user (name, age) VALUES (?, ?)`;connection.query(insertSql, values, (err, results) => {console.log(err,'err');console.log(results,'results');if (err) {console.error('Error querying database:', err);res.status(500).json({ error: 'Internal server error' });return;}res.json({code:'200',data:results,});});
});

增加用户成功!

4、修改用户信息以后提交修改(/api/user--put修改 )

Mysql更改用户操作命令为

jsUPDATE user SET name = '可爱', age = 18 WHERE id = 12

查看我们的sql数据库,数据库已经更改成功!

使用axios之中的put方法提交更改的数据,用户有ID的时候根据id进行更改 更新用户数据 PUT请求处理程序

js
// 更新用户数据 PUT请求处理程序 
app.put('/api/user', (req, res) => {console.log(req.body);const { name, age ,id} = req.body; // 从请求体中获取数据const values = [name, age, id];// 准备 SQL 插入语句const sql = "UPDATE user SET name = ?, age = ? WHERE id = ?";connection.query(sql, values, (err, results) => {console.log(err,'err');console.log(results,'results');if (err) {console.error('Error querying database:', err);res.status(500).json({ error: 'Internal server error' });return;}res.json({code:'200',data:results,});});
});

数据已经更改成功!

到这里我们已经实现了增改查,接下来下一节就是针对我们的删除进行处理。

前置知识​

注:get和delete是在路径中传递数据,而post和put可以在request body中传递数据

5、删除用户信息(/api/user--delete 删除)​

(1)数据库语句​

先试试数据库的删除语句,删除id为8的数据

jsDELETE FROM user WHERE id = 8

id为8的数据我们已经删除成功!

(2)手写删除方法​

接下来我们手写我们的删除 先在node之中手写我们的删除delete方法

js// 删除用户数据 DELETE请求处理程序  
app.delete('/api/user', (req, res) => {const {id} = req.body; // 从请求体中获取数据const values = [ id];const sql = "DELETE FROM user WHERE id = ?";connection.query(sql, values, (err, results) => {console.log(err,'err');console.log(results,'results');if (err) {console.error('Error querying database:', err);res.status(500).json({ error: 'Internal server error' });return;}res.json({code:'200',data:results,});});
});

(3)axio请求删除数据​

接下来拿axio请求删除数据,根据id来删除用户is为5的数据

js// 删除用户信息
function handleDelete(row) {console.log(row, '删除');let id=row.id;let api = "http://localhost:8888/api/user";let data={id:row.id};console.log(row.id,'row.id');axios.delete(api,data).then(res => {if (res.status == 200) {console.log(res, 'res');centerDialogVisible.value = false;}})
}

点击删除以后删除成功,然后我们刷新数据库数据。

我们的删除成功了,但是数据却依然存在,这是什么原因呢?

查看node控制台输出我们可以发现,原来我们压根没有拿到用户的id

这就需要提到我们一开始上面警示语句: 注:get和delete是在路径中传递数据,而post和put可以在request body中传递数据

(4)优化删除​

那我们尝试将用户的id放到我们的地址上试试,node删除方法就跟改为:

js// 删除用户数据 DELETE请求处理程序  
app.delete('/api/user/:id', (req, res) => {const {id} = req.body; // 从请求体中获取数据const values = [id];const userId = req.params.id;console.log(userId,'userId');const sql = "DELETE FROM user WHERE id = ?";connection.query(sql, values, (err, results) => {console.log(err,'err');console.log(results,'results');if (err) {console.error('Error querying database:', err);res.status(500).json({ error: 'Internal server error' });return;}res.json({code:'200',data:results,});});
});

再来调用我们的删除

js// 删除用户数据 DELETE请求处理程序  
app.delete('/api/user/:id', (req, res) => {const id = req.params.id;const values = [id];const sql = "DELETE FROM user WHERE id = ?";connection.query(sql, values, (err, results) => {console.log(err,'err');console.log(results,'results');if (err) {console.error('Error querying database:', err);res.status(500).json({ error: 'Internal server error' });return;}res.json({code:'200',data:results,});});
});

请求发现我们地址已经成为了 http://localhost:8888/api/user/5 刷新数据库,果然我们删除已经成功了!

到这里我们已经实现了增删改查,接下来下一节就是插入一些额外针对我们的增删改查进行优化和处理。

这篇关于❤Node04-操作本地数据库增删改查的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100833

相关文章

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

java Stream操作转换方法

《javaStream操作转换方法》文章总结了Java8中流(Stream)API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、... 目录流创建1、list 转 map2、filter()过滤3、foreach遍历4、groupingB

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.

Python视频剪辑合并操作的实现示例

《Python视频剪辑合并操作的实现示例》很多人在创作视频时都需要进行剪辑,本文主要介绍了Python视频剪辑合并操作的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录介绍安装FFmpegWindowsMACOS安装MoviePy剪切视频合并视频转换视频结论介绍

Windows自动化Python pyautogui RPA操作实现

《Windows自动化PythonpyautoguiRPA操作实现》本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大... 目录依赖包睡眠:鼠标事件:杀死进程:获取所有窗口的名称:显示窗口:根据图片找元素:输入文字:打开应用:依