nodejs封装数据库连接池

本文介绍了如何在Node.js环境中封装数据库连接池,包括安装mysql模块,创建js文件以存放配置信息,以及定义函数以便在不同地方使用数据库连接池进行SQL操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

封装数据库连接池

1.安装mysql

npm i mysql --save

2.创建js文件

在js文件中引入
引入
封装的公共配置信息
配置信息

3.创建函数
// 封装数据库连接池

// 引入mysql
let mysql = require('mysql')

let config = require('../config')
//创建数据库连接
let pool = mysql.createPool(config.mysql)

// 数据库操作
/**
 * @param {string} sql 查询数据库语句
 * @param {Array} data 查询数据库的数据
 */
let query = function(sql, data){
    return new Promise(function(resolve, reject){
        // getConnection 获取连接  回调函数中返回  
        // err 连接是否失败
        // conncetion 获取连接的连接信息
        pool.getConnection(function(err, conncetion){
            if(!err) {
                // sql 查询的语句
                // data 查询过程中需要的数据
                // error  查询的错误信息
                // result 查询的结果
                conncetion.query(sql, data, function(error, result){
                   if(!error) {
                        // 将查询成功返回的数据 存入resolve中
                        resolve(result)
                   }else {
                       reject(error)
                   }
                   conncetion.release()
                })
            }else {
                console.log(err)
                reject(err)
            }
        })
    })
}

module.exports = query

在需要操作sql的地方引入导出的query来使用数据库连接池

### Node.js 连接数据库的工作原理 Node.js 是一种基于事件驱动和异步 I/O 的 JavaScript 运行环境,其连接数据库的过程主要涉及以下几个方面: #### 1. **加载数据库驱动** 在 Node.js 中,要连接数据库需要引入相应的数据库驱动程序。例如,在使用 MySQL 数据库时,可以通过 `npm` 安装 `mysql` 或者更现代的 `mysql2` 模块作为驱动[^3]。 ```javascript const mysql = require('mysql'); ``` 此过程实际上是导入了一个封装好的模块,该模块内部实现了与数据库通信所需的协议支持以及数据序列化/反序列化的功能。 --- #### 2. **建立连接或连接池** 当应用程序启动时,通常会初始化一个到目标数据库的连接或者创建一个连接池来管理多个并发请求之间的共享资源[^1]。 对于单次连接而言: ```javascript let connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'test_db' }); connection.connect(); ``` 而对于高负载场景下的应用来说,则推荐采用连接池的方式以提高性能并减少频繁创建销毁连接带来的开销[^1]: ```javascript let pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'test_db', connectionLimit: 10 // 设置最大连接数 }); ``` 这里的关键在于理解如何利用有限数量的持久化链接服务于大量短时间内的读写需求,从而优化整体效率。 --- #### 3. **执行 SQL 查询** 一旦建立了有效的数据库连接之后,就可以向服务器发送具体的查询指令了。这一步骤可能包括简单的 SELECT、INSERT 等基本操作或者是复杂的事务处理逻辑[^2]。 下面展示了一种标准模式下通过回调函数接收结果的例子: ```javascript pool.query('SELECT * FROM users WHERE id = ?', [userId], function(error, results){ if (error) throw error; console.log(results); }); ``` 值得注意的是,在构建动态SQL字符串的时候特别需要注意安全性问题比如防止SQL注入攻击的发生[^2]。 --- #### 4. **断开连接** 最后,在完成所有的交互动作以后应当适时释放占用的网络通道以便让其他进程能够继续访问相同的后端服务节点[^1]: ```javascript if(connection){ connection.end(); } else{ pool.end(); } ``` 以上就是整个流程概述,当然实际开发过程中还涉及到更多细节考量如错误捕获机制设计等等。 --- ### 总结 综上所述,Node.js 连接数据库的核心工作原理主要包括四个阶段:加载合适的客户端库;配置参数形成初步联系渠道(单一实例或是集合形式);依据业务规则发出具体的数据检索修改命令;最终妥善结束对话关系回收硬件设施使用权限给操作系统调度分配其它任务之需。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值