Как правильно делать подключение к дб на node.js используя react

Не очень понимаю нужно ли закрывать пулы, или делать проверку при подключение.

  1. Вариант
import mysql from 'mysql2/promise';

export const ConnectToDB = async () => {
    try {
        const pool = await mysql.createPool({
            host: process.env.SQLHOST,
            user: process.env.SQLUSER,
            password: process.env.SQLPASSWORD,
            database: process.env.SQLDATABASENAME,
            waitForConnections: true,
            connectionLimit: 3,
            queueLimit: 0,
        });
        return pool;
    }
    catch (e) {
        throw new Error(e);
    }
}
const connection = await ConnectToDB();

const query = 'SELECT * FROM users WHERE BINARY username = ?';
const [users] = await connection.execute(query, [credentials.username]);

.release() или .end() не работают так-как execute сам этим управляет, но если сама функция вызывается несколько раз в которое идет ConnectToDB() то не будет ли это создавать бесконечное кол-во пулов, типо с начало 3 потом 6, 9 и так-далее? Нужно ли мне делать такие проверки в файле?

import mysql from 'mysql2/promise';

const connection = {};

export const ConnectToDB = async () => {
    try {
        if (connection.pool) {
            console.log('Reusing existing pool');
            return connection.pool;
        };
        const pool = await mysql.createPool({
            host: process.env.SQLHOST,
            user: process.env.SQLUSER,
            password: process.env.SQLPASSWORD,
            database: process.env.SQLDATABASENAME,
            waitForConnections: true,
            connectionLimit: 3,
            queueLimit: 0,
        });
        connection.pool = pool;
        return pool;
    }
    catch (e) {
        throw new Error(e);
    }
}

Тут я сохраняю пул, а после чего проверяю если он есть то возвращаю его, а если нет, создаю новые.


Ответы (0 шт):