Node.js中使用Sequelize执行原生MySQL查询后如何关闭连接
解决方案
实现逻辑说明
你当前使用的Sequelize默认通过连接池管理数据库连接,常规场景下查询完成后连接会自动放回连接池等待复用。如果你需要主动释放连接验证报错,建议通过手动获取、释放单连接的方式实现,不要直接关闭整个连接池(会导致后续请求无法获取数据库连接,仅适合一次性测试脚本场景)。
调整后的查询代码
const dbConnect = require('../database/db'); // 补充你代码中缺失的QueryTypes导入 const { QueryTypes } = require('sequelize'); let connection; try { // 从连接池获取单独的可用连接 connection = await dbConnect.connectionManager.getConnection(); // 使用当前获取的连接执行查询 const getEmployeeData = await connection.query( `Select * From employee where employeeId = '00001'`, {type: QueryTypes.SELECT} ); // 主动释放当前连接,归还到连接池 await dbConnect.connectionManager.releaseConnection(connection); return res.json({data: getEmployeeData}); } catch (error) { // 异常场景也需要释放连接,避免连接泄漏 if (connection) { await dbConnect.connectionManager.releaseConnection(connection); } // 此处添加你的自定义错误处理逻辑 return res.status(500).json({error: '查询失败', msg: error.message}); }
特殊场景说明
如果你测试需要直接关闭整个连接池(仅适合单次运行的脚本,禁止在常驻运行的Web服务中使用),可以直接在return语句前添加await dbConnect.close()即可。
内容的提问来源于stack exchange,提问作者A.K.M. Arifur Rahman
相关产品推荐
相关产品推荐

