Я работаю над nodejs с mysql (8.x). Я установил mysql библиотеку из npm.
Я написал код, подобный приведенному ниже.
Файл A - connection.js
const pooledConInfo = {
host: 'localhost',
user: 'user',
password: 'pw',
database: 'db',
insecureAuth : true,
connectionLimit : 10,
};
const pooledConnection = mysql.createPool(pooledConInfo);
module.exports = pooledConnection;
Файл B - MemberRouter.js
const con = require('../db/connection');
...
router.get('/api/member', (req, res, nxt) => {
let rs = Object.assign({}, resForm);
try {
con.getConnection((err, connection) => { // #1. Do not want to repeat in every query situation
if(err) throw err;
connection.query('SELECT * FROM MEMBER LIMIT ?', 10, (err, result, fields) => {
connection.release(); // #2. Do not want to repeat in every query situation
if(err) throw err;
rs.data = result;
return res.json(rs);
})
});
} catch (queryException) {
rs.cause = queryException;
return res.json(rs);
}
});
Это работает, но я не верю, что люди используют так.
Это два основных вопроса, которые я хочу задать
- Самое неприятное, что мне приходится освобождать каждый пул при каждом обратном вызове запроса. Это правильный путь
- Есть ли хороший шаблон для применения? Я хочу обернуть
getConnection
и connection.release
часть ...
Спасибо