Boa tarde! Eu estou tendo um problema durante a consulta no banco de dados. Abri um tópico hoje sobre o tema e a dúvida foi respondida, porém outro erro apareceu oriundo da solução proposta. O post que abri com a dúvida é esse: https://cursos.alura.com.br/forum/topico-error-cannot-enqueue-quit-after-invoking-quit-51325#642135
Ao realizar o fechamento da conexão conforme indicado, me parece que a lista que vêm da base não está carregando pois parece que o objeto contendo os registros está undefined (pois não consigo acessar a propriedade length)
Segue implementação após o primeiro tópico aberto:
/**
* @author bruno.carneiro
* @param {*} app
*/
module.exports = function(app) {
// Objeto de conexão com a base de dados
var conn = app.infra.connectionFactory();
// 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
});
}).end(); // Agora estou encadeando a função end() para não ter problema com a assincronicidade...
});
}
O que parece é que a rota é carregada normalmente e que o parâmetro results é atribuído para a variável lista corretamente, porém results parece estar undefined
ERRO:
Server listening on http://localhost:3000 ...
TypeError: C:\Users\brunocarneiro\Documents\desenvolvimento\estudo\back-end\nodejs\alura\app\views\produtos\lista.ejs:11
9| </thead>
10| <tbody>
>> 11| <% for(var i=0; i < lista.length; i++) { %>
12| <tr>
13| <td><%= lista[i].id; %></td>
14| <td><%= lista[i].nome %></td>
Cannot read property 'length' of undefined
Eu tentei também a seguinte abordagem:
/**
* @author bruno.carneiro
* @param {*} app
*/
module.exports = function(app) {
// Objeto de conexão com a base de dados
var conn = app.infra.connectionFactory();
// 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 dentro do callback e depois do render. Consulta a primeira vez, mas dá erro se der reload na página.
});
});
}
ERRO:
Server listening on http://localhost:3000 ...
events.js:183
throw er; // Unhandled 'error' event
^
Error: Cannot enqueue Quit after invoking quit.
Alguém pode me ajudar? :)