Estoy trabajando en un proyecto con nodejs + mysql2 y algunas veces me sale el error Demasiadas conexiones .
Mi conexión:
import {createPool, Pool} from 'mysql2/promise'; export async function connect(): Promise < any > { const connection: Pool = await createPool({ host: 'localhost', port: 3306, user: 'root', password: '', database: 'mendozarq', connectionLimit: 10 }); return connection; }Controlador:
import { Response, Request } from 'express'; import { FieldPacket, Pool } from 'mysql2/promise'; import { connect } from './../../classes/database'; import { Personal } from './../../models/personal.interface'; export const getAllPersonal = async (req: Request, res: Response) => { try { const conn: Pool = await connect(); const [personal]: [any[], FieldPacket[]] = await conn.query('SELECT * FROM personal ORDER BY creadoEn DESC'); conn.end(); return res.status(200).json(personal); } catch (error) { return res.status(400).json({ error }); } }Entonces, mi pregunta es que tengo que usar createConnection en lugar de createPool o simplemente tengo que crear una instancia de mi conn.
Solo debe llamar a createPool una vez, luego seleccione del grupo cada vez a partir de entonces.
Entonces, debería verse algo como esto. Cree una constante que almacene el grupo. Luego, en la función, si el grupo ya existe, devuelva el grupo sin llamar a createPool . Si no existe, llamaría a createPool y devolvería el grupo ya creado.
import {createPool, Pool} from 'mysql2/promise'; const globalPool: Pool | undefined = undefined; export async function connect(): Promise <Pool> { // If the pool was already created, return it instead of creating a new one. if(globalPool) { return globalPool; } // If we have gotten this far, the pool doesn't exist, so lets create one. globalPool = await createPool({ host: 'localhost', port: 3306, user: 'root', password: '', database: 'mendozarq', connectionLimit: 10 }); return globalPool; }