❤Nodejs 第三章(操作本地数据库增改查)

简介: 【4月更文挑战第3天】该文档介绍了使用Node.js和Express操作本地数据库的增删改查操作。首先,概述了RESTful API的四个基本方法:GET、PUT、DELETE和POST。然后,展示了如何查询用户列表,通过axios发送GET请求,遇到跨域问题后,在app.js中设置允许跨域。接着,添加了POST方法来新增用户,并展示了MySQL的INSERT语句。

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

源码地址(https://gitee.com/lintaibai/NexusVue)喜欢的给个star吧

(前置知识)Node.js RESTful API

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

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

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

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

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

本地进行调用

// 获取用户
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;
        }
    })
}

突然发现报错了:

image.png

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

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.js完整过程如下:

const connection = mysql.createPool({
   
  host: 'localhost', // 数据库主机地址,如果是本地数据库则使用localhost
  user: '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

image.png

查询成功!

image.png

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

Mysql增加用户操作命令为

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

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

image.png

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

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

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

// 新增用户 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,
    });
  });
});

image.png

增加用户成功!

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

Mysql更改用户操作命令为

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

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

image.png

使用axios之中的put方法提交更改的数据,用户有ID的时候根据id进行更改

更新用户数据 PUT请求处理程序


// 更新用户数据 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,
    });
  });
});

数据已经更改成功!

image.png

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

目录
相关文章
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第六章(操作本地数据库前置知识优化)
【4月更文挑战第6天】本文介绍了Node.js操作本地数据库的前置配置和优化,包括处理接口跨域的CORS中间件,以及解析请求数据的body-parser、cookie-parser和multer。还讲解了与MySQL数据库交互的两种方式:`createPool`(适用于高并发,通过连接池管理连接)和`createConnection`(适用于低负载)。
20 0
|
7月前
|
存储 SQL 关系型数据库
数据库入门下篇(如何安装和登录MYSQL数据库)
数据库入门下篇(如何安装和登录MYSQL数据库)
119 0
|
8天前
|
数据库 JavaScript SQL
❤Nodejs 第八章(操作本地数据库优化查询为分页查询方式)
【4月更文挑战第8天】在Node.js中,本章讲述了如何优化本地数据库查询以实现分页。首先,添加了前端分页参数`pageNum`(页码)和`pageSize`(每页条数)。接着,通过打印`req.query`来验证参数是否正确传递。初始查询示例为`SELECT * FROM user WHERE age = 18 LIMIT 0, 10`。当改变分页参数时,查询能相应更新。在实现动态偏移量`offset`时,起初因误添加`' AND' : ' WHERE'`导致错误,修正后使用`LIMIT`和计算出的`offset`进行分页。
47 5
❤Nodejs 第八章(操作本地数据库优化查询为分页查询方式)
|
9天前
|
JavaScript 数据库
❤Nodejs 第七章(操作本地数据库高并发createPool方式)
【4月更文挑战第7天】本文介绍了如何使用Node.js操作本地数据库接口的优化,将之前的单次连接(createConnection)替换为支持高并发的连接池(createPool)。主要改动包括:查询、新增用户、获取用户详情、更新和删除用户的方法,都改用`connectionpool.query()`。这样改进能提升效率,适应更多并发请求。代码示例展示了如何在路由处理函数中使用连接池进行数据库操作。
78 6
❤Nodejs 第七章(操作本地数据库高并发createPool方式)
|
12天前
|
SQL JavaScript 前端开发
❤Nodejs 第五章(操作本地数据库优化和处理)
【4月更文挑战第5天】本文介绍了在Node.js中操作本地数据库的优化和处理方法。首先展示了如何优化用户查询接口,根据用户条件查询用户列表。通过设置查询参数并使用axios发送GET请求,结合Express框架从`req.query`获取参数,实现动态SQL查询。接着,文章演示了根据用户ID查询用户详细信息,指出使用`req.params`而非`req.query`来获取URL路径中的动态ID。
28 5
|
13天前
|
SQL JavaScript API
❤Nodejs 第四章(操作本地数据库实现删除-源码地址已开放)
【4月更文挑战第4天】❤Nodejs 第四章(操作本地数据库实现删除-源码地址已开放)在Node.js中实现删除本地数据库记录的操作。首先尝试通过SQL删除ID为8的用户,然后编写`app.delete`路由处理程序,从请求体获取ID并执行删除。。最终成功删除用户并展示了数据库的更新结果。下一节将优化增删改查功能。
25 1
|
15天前
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第二章(Node连接本地数据库)
【4月更文挑战第2天】本文介绍了如何使用Node.js连接本地MySQL数据库。首先,提到了在MySQL官网下载安装数据库和使用Navicat for MySQL进行数据库管理。接着,通过`yarn add mysql`在项目中安装数据库依赖。然后,创建`app.js`文件,设置数据库连接参数,并建立连接进行查询操作。遇到导入模块的错误后,修改导入方式为CommonJS语法。
33 1
|
9月前
|
SQL 存储 安全
数据库视频第一章
数据库视频第一章
50 0
|
9月前
|
存储 SQL 关系型数据库
学习数据库第一章
学习数据库第一章
|
9月前
|
存储 SQL JSON
MySQL数据库,从入门到精通:第十八篇——MySQL 8新特性全解析(一)
MySQL数据库,从入门到精通:第十八篇——MySQL 8新特性全解析
80 0

热门文章

最新文章