config.js
const mysql = require('mysql2'); const config = { host: 'localhost', port: '3306', user: 'root', password: 'root', database: 'krometal', charset: "utf8mb4_bin", multipleStatements: true }; const connection = mysql.createPool(config); connection.getConnection(function (err, connection) { //connecting to database if (err) { logger.log('error', err); console.log("MYSQL CONNECT ERROR: " + err); } else { logger.log('info', "MYSQL CONNECTED SUCCESSFULLY."); console.log("MYSQL CONNECTED SUCCESSFULLY."); } }); module.exports = { connection }iniciar sesión.js
const loginUser = async (req, callback) => { connection.query(sql, async function (err, rows) => { // logic callback(result, 401, connection); }) }ruta.js
users.post('/users/login', async (req, res) => { await loginUser(req, async (response, code, connection) => { await connection.end(); res.status(code).send(response); }); }); El problema es que la primera vez que intento iniciar sesión funcionó bien, pero si vuelvo a intentar la misma API de inicio de sesión, aparece el error Error: Pool is closed.
¿Debo usar el
conexión.end()
método cada vez que abro la conexión o mysql2 finaliza automáticamente la conexión?
no corras
await connection.end();Después de ejecutar esta función, debe crear una nueva conexión usando
connection.getConnection();