Estou fazendo exatamente igual à lição oito onde é feito uma redução do código para melhorar o entendimento e a legibilidade do código de conexão com o banco de dados, contudo isso não funciona como o esperado e ele não consegue me retornar o resultado do banco de dados.
Esse é o meu arquivo produtos.js:
module.exports = function(app){
app.get('/produtos',function(req,res){
var connection = app.infra.connectionFactory();
var produtosBanco = app.infra.produtosBanco(connection);
produtosBanco.lista(function(erros,resultados){
res.render('produtos/lista',{lista:resultados});
});
connection.end();
});
}
E este o meu arquivo produtosBanco.js:
module.exports = function(){
return function(connection){
this.lista = function(callback){
connection.query('select * from produtos',callback);
}
return this;
}
}
Ao fazer um console.log(resultados) ele me retorna undefined e a mensagem de erro está na minha lista.ejs, linha 11:
"Cannot read property 'length' of undefined"
<html>
<body>
<table>
<tr>
<td>id</td>
<td>nome</td>
<td>descricao</td>
<td>preco</td>
</tr>
<tr>
<%for(var i=0;i<lista.length;i++){%>
<tr>
<td><%=lista[i].id%></td>
<td><%=lista[i].nome%></td>
<td><%=lista[i].descricao%></td>
<td><%=lista[i].preco%></td>
</tr>
<%}%>
</tr>
</table>
</body>
</html>