❤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

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示