❤Nodejs 第七章(操作本地数据库高并发createPool方式)

简介: 【4月更文挑战第7天】本文介绍了如何使用Node.js操作本地数据库接口的优化,将之前的单次连接(createConnection)替换为支持高并发的连接池(createPool)。主要改动包括:查询、新增用户、获取用户详情、更新和删除用户的方法,都改用`connectionpool.query()`。这样改进能提升效率,适应更多并发请求。代码示例展示了如何在路由处理函数中使用连接池进行数据库操作。

❤Nodejs 第七章(操作本地数据库接口优化)

喜欢的给个star吧

【4月更文挑战第7天】
之前我们采用的都是这种createConnection方式,上一章节我们讲了createConnection和createPool的区别和联系,接下来我们也采用createPool这种更加高效的方式,接下来我们就使用这种方式优化我们的数据库接口。

之前我们连接数据库采用的这种方式:

image.png

现在我们更改为高并发createPool方式,总得来说只需要把connection更改为createPool方式即可

1、查询方式更改为createPool方式

app.get('/api/user', (req, res) => {
  const { name, age,sex } = req.query;
  const values =[name, age,sex];
  let query = 'SELECT * FROM user';
  // 构建查询条件
  const params = [];
  if (name !== undefined&&name !== ''&&name !== null) {
    query += ' WHERE name = ?';
    params.push(name);
  }
  if (age !== undefined&&age !== ''&&age !== null) {
    query += params.length ? ' AND' : ' WHERE';
    query += ' age = ?';
    params.push(age);
  }

  // 查询数据库并返回数据
  connectionpool.query(query,params,(err, results) => {

    if (err) {
      console.error('Error querying database:', err);
      res.status(500).json({ error: 'Internal server error' });
      return;
    }
    res.json({
      code:'200',
      data:results,
    });
  });
});

2、新增用户post方法更改为我们的连接池方式


// 新增用户 POST 请求处理程序 
app.post('/api/user', (req, res) => {
  const { name, age } = req.body; // 从请求体中获取数据
  const values = [name, age];
  const insertSql = `INSERT INTO user (name, age) VALUES (?, ?)`;
  connectionpool.query(insertSql, values, (err, 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、获取用户详情

// 获取用户详情 3
app.get('/api/user/:id', (req, res) => {

  const { id } = req.params;
  const values =[id];
  let query = 'SELECT * FROM user WHERE id = ?';
  connectionpool.query(query,values,(err, results) => {
    if (err) {
      console.error('Error querying database:', err);
      res.status(500).json({ error: 'Internal server error' });
      return;
    }
    res.json({
      code:'200',
      data:results?results[0]:{},
    });
  });
});

4、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 = ?";
  connectionpool.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,
    });
  });
});

5、删除用户delete方法的更改

// 删除用户数据 DELETE请求处理程序  
app.delete('/api/user/:id', (req, res) => {
  // const {id} = req.body; // 从请求体中获取数据
  const id = req.params.id;
  // console.log(id,'id');
  const values = [id];
  const sql = "DELETE FROM user WHERE id = ?";
  connectionpool.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,
    });
  });
});

最后测试一下我们的增删改查以及我们的查询条件,没问题。高并发createPool方式更改ok!

目录
相关文章
|
1天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
12天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
15天前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
2月前
|
SQL JavaScript 关系型数据库
Node服务连接Mysql数据库
本文介绍了如何在Node服务中连接MySQL数据库,并实现心跳包连接机制。
38 0
Node服务连接Mysql数据库
|
3月前
|
存储 缓存 NoSQL
Redis内存管理揭秘:掌握淘汰策略,让你的数据库在高并发下也能游刃有余,守护业务稳定运行!
【8月更文挑战第22天】Redis的内存淘汰策略管理内存使用,防止溢出。主要包括:noeviction(拒绝新写入)、LRU/LFU(淘汰最少使用/最不常用数据)、RANDOM(随机淘汰)及TTL(淘汰接近过期数据)。策略选择需依据应用场景、数据特性和性能需求。可通过Redis命令行工具或配置文件进行设置。
69 2
|
3月前
|
存储 缓存 运维
优化高并发环境下的数据库查询性能:实战经验与技巧
在高并发环境下,数据库性能往往成为系统瓶颈。本文将深入探讨在高并发场景下优化数据库查询性能的策略与实践,包括索引优化、查询优化、数据库架构设计以及缓存机制的应用。通过对具体案例的分析,读者将能够掌握提升数据库性能的关键技术,从而在面对大规模用户请求时提高系统的响应速度和稳定性。
|
3月前
|
SQL JavaScript 前端开发
node.js使用Sequelize操作数据库
node.js使用Sequelize操作数据库
|
3月前
|
数据采集 资源调度 JavaScript
Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
【8月更文挑战第4天】Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
55 5
|
3月前
|
存储 监控 固态存储
【性能突破】揭秘!如何让您的数据库在高并发风暴中稳如磐石——一场关于WAL写入性能优化的实战之旅,不容错过的技术盛宴!
【8月更文挑战第21天】在高并发环境下,数据库面临极大挑战,特别是采用Write-Ahead Logging (WAL)的日志机制。本文通过一个在线交易系统的案例,分析了WAL写入性能瓶颈,并提出优化方案:理解WAL流程;分析磁盘I/O瓶颈、缓冲区设置与同步策略;通过增大WAL缓冲区、使用SSD及调整同步策略来优化;最后通过测试验证改进效果,总结出一套综合优化方法。
59 0
|
4月前
|
缓存 NoSQL 数据库
Redis问题之在高并发场景下,保证Redis缓存和数据库的一致性如何解决
Redis问题之在高并发场景下,保证Redis缓存和数据库的一致性如何解决
144 3