Я развернул NodeJS API на Heroku и попытался подключить его к базе данных MySQL, поэтому я создал connectionPool для обработки подключений в учетной записи ClearDB ignite (бесплатно), которая позволяет максимум 10 подключений.
Каждый раз, когда я выполняю запрос к базе данных, он просто добавляет новое соединение в стек, пока не достигнет 10 соединений, и приложение не вылетит.
Мой код выглядит следующим образом:
Фабрика подключения:
var mysql = require('mysql');
function createDBConnection() {
var conn = mysql.createPool({
host: 'xxx',
user: 'xxx',
password: 'xxx',
database: 'xxx'
});
return conn;
}
module.exports = function() {
return createDBConnection;
}
И вот мой запрос на выбор:
function Dao(connection) {
this._connection = connection;
}
Dao.prototype.findAll = function (callback) {
this._connection.query('SELECT * FROM table',
function(errors, results) {
callback(errors,results);
});
};
module.exports = function() {
return Dao;
}
Наконец, вот маршрут, который я использую для его вызова:
app.get('/products', function (req,res) {
var connection = app.persistence.connectionFactory();
var dao = new app.persistence.Dao(connection);
dao.findAll(function (err, result) {
res.format({
json: function () {
res.json(result);
}
});
});
});
Я попытался изменить createPool() на createConnection(), а затем вызвать функцию .end()/.destroy() сразу после каждого запроса, но она вообще не работает.
Любые подсказки?