У меня есть database.js файл, который подключается к БД и управлять подключениями экспортировать соединение и повторно использовать его в моем приложенииmodule.exports сферы и узел-MySQL
var mysql = require('mysql');
pool = mysql.createPool({
host: cfg.mysql.host,
user: cfg.mysql.user,
password: cfg.mysql.pass,
database: cfg.mysql.db,
port: cfg.mysql.port
});
function handleDisconnect() {
pool.getConnection(function(err, cnt) {
module.exports.connection = cnt;
});
pool.on('error', function (err) {
console.log(err);
});
};
handleDisconnect();
process.on('uncaughtException', function (err) {
console.error(err.code);
if(err.code === "PROTOCOL_CONNECTION_LOST")
handleDisconnect();
console.log("Node NOT Exiting...");
});
app.js
var db = require('./database');
app.get('/test', function(req, res) {
db.connection.query('SELECT * from table', function(err, result) {
console.log(result);
});
}
Это прекрасно работает. Моя проблема заключается в отключении сервера mysql. Я обрабатываю эту ошибку, вызывая функцию handleDisconnect(), чтобы получить новое соединение. Однако, когда это произойдет соединение не определенно в моем app.js, когда я перейти к моему браузеру/тесту
TypeError: Cannot call method 'query' of undefined
Мысли?
Соединение не привязано к 'module.exports', оно назначено' module.exports.connection', поэтому должно работать нормально (хотя я согласен, что текущая настройка немного сомнительна). – robertklep
Хороший улов, я этого не заметил. – ravi