Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Error: Cannot enqueue Quit after invoking quit

Bom dia, professor. A configuração realizada está funcionando corretamente quando acesso a página pela primeira vez. Se eu der reload na página, o seguinte erro aparece: Error: Cannot enqueue Quit after invoking quit.

Segue o código (produtos.routes.js)

/**
 * @author bruno.carneiro
 * @param {*} app 
 */

var connectionFactory = require('../../config/connectionFactory');

module.exports = function(app) {

    // Objeto de conexão com a base de dados
    var conn = connectionFactory(); // obtendo a conexão

    // Rota para listagem de produtos
    app.get('/produtos/lista', function(req, res) {

        // Executando consulta
        conn.query('select * from produtos', function(err, results) {
            res.render('produtos/lista', {
                lista : results
            });
        });

        conn.end(); // fechando a conexão
    });
}

(connectionFactory.js)

var mysql = require('mysql');

module.exports = function() {

    // Criando objeto de conexão
    var conn = mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'dbAlura'
    });

    return conn;
};

Eu suspeito que seja o conn.end() (fechando a conexão), mas eu creio ter implementado da mesma forma (ou de forma semelhante) ao que foi instruído. Poderia me ajudar com essa questão? Abraços

3 respostas
solução!

Oi Bruno, tudo bem? Acho que você está correto quanto ao problema, mas a causa é de conseguir uma vez e outra não se deve eu acho ao fato do fluxo assíncrono do node, ou seja, o conn.end pode estar sendo executado antes mesmo de iniciar o conn.query.

Uma possível solução é encadear a chamada do conn.query com o conn.end, da seguinte forma:

conn.query('select * from produtos', function(err, results) {
            res.render('produtos/lista', {
                lista : results
            });
}).end(); // fechando a conexão

Outra possibilidade é por o conn.end dentro do conn.query, mas logo após o render.

Nossa, que rápido a resposta! haha! Muito obrigado Wanderson! Posso seguir agora com os estudos. Problema resolvido!

Ótimo Bruno! Bons estudos. Caso tenha mais problemas, pode contar com a gente aqui no fórum!