Consegui resolver o problema da conexão
eu executei os seguintes passos
1 - alterei o código da connectionFactory, no module.express eu retornei a função dele, e não a execução, veja:
var mysql = require('mysql');
function createDBConnection() {
return mysql.createConnection({
host: 'localhost',
user: 'trab_pw',
password: '123456',
database: 'Ecommerce'
});
}
//Wrapper
module.exports = function () {
return createDBConnection;
}
2 - E nas rotas, eu passei a usar os parênteses e colocar o connection.end(); no final
module.exports = function (app) {
var listProduct = function (req, res) {
var connection = app.infra.connectionFactory();
var productDAO = new app.infra.ProductDAO(connection);
productDAO.list(function (error, results) {
res.format({
html: function () {
res.render('produtos/lista', {list: results});
},
json: function () {
res.json(results);
}
});
});
connection.end();
};
app.get('/produtos', listProduct);
app.get('', function (req, res) {
res.render('produtos/index');
});
app.get('/produtos/form', function (req, res) {
res.render('produtos/form', {errorValidator: {}, product: {}});
});
app.post('/produtos', function (req, res) {
var product = req.body;
req.assert('descProduto', 'Descrição é obrigatório.').notEmpty();
req.assert('valorUnitario', 'Valor Unitário - Formato inválido.').isFloat();
req.assert('valorUnitario', 'Valor unitário é obrigatório.').notEmpty();
req.assert('descMarca', 'Marca obigatoria').notEmpty();
req.assert('quantidadeProduto', 'Quantidade - Formato inválido.').isInt();
req.assert('quantidadeProduto', 'Quantidade é obrigatório.').notEmpty();
var error = req.validationErrors();
if (error) {
res.format({
html: function () {
res.status(400).render('produtos/form', {errorValidator: error, product: product});
},
json: function () {
res.status(400).json(error);
}
});
return;
}
console.log(product);
var connection = app.infra.connectionFactory();
var productDAO = new app.infra.ProductDAO(connection);
productDAO.save(product, function (error, results) {
// console.log(error);
res.redirect('/produtos');
});
});
}
Muito obrigado pela ajuda, já podemos encerrar esse tópico. E eu abri outro tópico falando quase o mesmo assunto, vou marcar como solucionado também.