1
resposta

istaProdutos is not defined

Erro ao mudar a classe para prototype

dao

function ProdutosDAO(connection) {
    this._connection = connection;
}

ProdutosDAO.prototype.lista = function(callback) {
    this._connection.query('select * from produtos',callback);
}

module.exports = function(){
    return ProdutosDAO;
};
`

//produto js

module.exports = function(app){
    //log
    console.log("executando requisição da listagem dos produtos.");

    //separamos a regra de negocio da apresentação da tela.  
    app.get('/produtos',function(req,res){  
        //abre a conexao
        var connection = app.infra.connectionFactory();
        var dao = new app.infra.ProdutosDAO(connection); //o uso do new cria um novo contexto para this.

        console.log('passou por aqui'); 
        //executa a query        
        dao.lista(function(err, results){  
            console.log(results);        
            res.render('produtos/lista',{lista:results});
        });

        //encerra a conexao.
        connection.end();      
    });   

}

erro:

ReferenceError: C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\app\views\produtos\lista.ejs:10
    8|                 <td>preco</td>

    9|             </tr>

 >> 10|             <%for(var i=0;i<listaProdutos.length;i++) {%>

    11|                 <tr>

    12|                     <td><%=listaProdutos[i].id%></td>

    13|                     <td><%=listaProdutos[i].titulo%></td>


listaProdutos is not defined
    at eval (eval at <anonymous> (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\ejs\lib\ejs.js:524:12), <anonymous>:11:21)
    at returnedFn (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\ejs\lib\ejs.js:555:17)
    at tryHandleCache (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\ejs\lib\ejs.js:203:34)
    at View.exports.renderFile [as engine] (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\ejs\lib\ejs.js:412:10)
    at View.render (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\express\lib\view.js:128:8)
    at tryRender (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\express\lib\application.js:640:10)
    at EventEmitter.render (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\express\lib\response.js:971:7)
    at Query._callback (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\app\routes\produtos.js:25:15)
    at Query.Sequence.end (C:\TI\ALURA\CURSOS\NODEJS\Projeto\casadocodigo\node_modules\mysql\lib\protocol\sequences\Sequence.js:86:24)
1 resposta

Sergio, tudo bem ?

Cara você chamou na parte do front a variavel de listaProdutos e no código você está enviando para a view lista

Ai ao percorrer o uma referencia nula ele quebra seu sistema.

Você precisa alterar isso !

Abraços