У меня есть приложение nodejs, которое подключается к mysql. Когда я покидаю соединение, откройте сервер, чтобы закрыть его, и когда я использую con.destroy или con.end, я не могу подключиться к mysql.
Что мне делать, и лучше ли продолжать закрывать и открывать новое соединение для каждого запроса, зная, что будет много.
module.exports = class DataAccessLayer {
constructor() {
this.con = mysql.createConnection({
host: ("host.com"),
user: ("asdfg"),
password: ("zxcvb"),
database: ("DB_example")
});
this.con.connect(function (err) {
if (err) throw err;
console.log("Connected to DB");
});
}
getUserBySenderId(senderId) {
this.con.query("SELECT sender_id,first_name,last_name,creation_date " +
"FROM USER " +
"WHERE sender_id = '" + senderId + "'",
function (err, result, fields) {
if (err) throw err;
console.log(result);
});
}
Для вашей проблемы вы можете посетить этот документ https://www.npmjs.com/package/mysql#pooling-connections.
Вместо того, чтобы каждый раз делать запрос и снова и снова делать базу данных, попадающей в MYSQL. Также нужно помнить, когда закрыть соединение, а когда открыть - довольно громоздкая задача. Вы можете использовать Sequelize http://docs.sequelizejs.com/ (ORM). Это поможет вам избавиться от всех этих проблем и позволит сосредоточиться на вашей бизнес-логике вместо технических ошибок.
HTH Спасибо!
Создание и разрывание соединения с базой данных при каждом запросе приведет к ухудшению времени отклика каждого запроса, что скажется на общей производительности. Вы должны рассмотреть возможность использования пула соединений, как описано в https://www.npmjs.com/package/mysql#pooling-connections. Пул соединений изолирует приложение от сценариев, таких как сервер, завершающий незанятое соединение из-за отсутствия активности.