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

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

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

源码地址(https://gitee.com/lintaibai/NexusVue)喜欢的给个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!

目录
相关文章
|
2天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之采集oracle的时候报ORA-65040:不允许从可插入数据库内部执行该操作如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
20 3
|
6天前
|
存储 数据处理 数据库
深入了解达梦数据库的增删查改操作:从入门到精通
深入了解达梦数据库的增删查改操作:从入门到精通
|
6天前
|
DataWorks 关系型数据库 调度
DataWorks操作报错合集之DataWorks 数据库同步任务中,如果遇到表情符报错的现象,怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
30 0
|
6天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
35 0
|
4天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之当 SQL Server 源数据库中的数据更新后,CDC 吐出的操作(op)是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
15 0
|
6天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
6天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
12 0
|
6天前
|
SQL JSON 关系型数据库
[UE虚幻引擎插件DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明
本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。
20 2
|
6天前
|
Java 关系型数据库 数据库连接
【C 言专栏】C 语言与数据库的连接与操作
【5月更文挑战第2天】本文探讨了C语言如何连接和操作数据库,介绍了数据库连接的基本原理,如通过ODBC、JDBC或原生接口与数据库交互。文章详细阐述了使用ODBC连接的步骤,并列举了C语言在数据库操作中的常见任务,强调了错误处理、数据类型匹配和性能优化的重要性。通过实际案例,展示了在学生信息管理系统中应用C语言与数据库交互的过程。本文旨在帮助读者更好地理解和应用C语言进行数据库管理。
|
6天前
|
XML Java 数据库连接
Springboot整合mybatisPlus操作数据库
MyBatis-Plus是MyBatis的增强工具,简化开发、提高效率。它提供官网文档,便于集成到SpringBoot项目中。集成步骤包括添加mybatis-plus-boot-starter和数据库驱动依赖,配置数据源,扫描Mapper类包。Mapper接口继承BaseMapper即可使用基本的CRUD操作。示例代码展示了Service层的增删改查实现。MyBatisPlus还支持逻辑删除、自动填充等功能,同时可与Mybatis XML配合使用,通过调整配置指定XML映射文件位置。

热门文章

最新文章