Как правильно делать подключение к дб на node.js используя react
Не очень понимаю нужно ли закрывать пулы, или делать проверку при подключение.
- Вариант
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);
}
}
Тут я сохраняю пул, а после чего проверяю если он есть то возвращаю его, а если нет, создаю новые.