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

lista não definida

Não entendi de onde veio a variável 'lista', e estou tendo o seguinte erro:

TypeError: D:\trabalhos\alura\nodeJS\casadocodigo\app\views\produtos\lista.ejs:13
   11|             <td>preco</td>     
   12|         </tr> 
>> 13|         <%for(var i=0 ; i < lista.length ; i++) {%> 
   14|             <tr> 
   15|                 <td><%=lista[i].id%></td> 
   16|                 <td><%=lista[i].titulo%></td> 

Cannot read property 'length' of undefined
   at eval (eval at <anonymous> (D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\ejs\lib\ejs.js:491:12), <anonymous>:11:30)
   at returnedFn (D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\ejs\lib\ejs.js:520:17)
   at View.exports.renderFile [as engine] (D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\ejs\lib\ejs.js:374:31)
   at View.render (D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\express\lib\view.js:126:8)
   at tryRender (D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\express\lib\application.js:639:10)
   at EventEmitter.render (D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\express\lib\application.js:591:3)
   at ServerResponse.render (D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\express\lib\response.js:960:7)
   at Query._callback (D:\trabalhos\alura\nodeJS\casadocodigo\app\routes\produtos.js:13:17)
   at Query.Sequence.end (D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\mysql\lib\protocol\sequences\Sequence.js:85:24)
   at D:\trabalhos\alura\nodeJS\casadocodigo\node_modules\mysql\lib\protocol\Protocol.js:399:18

Meu app.js e lista.ejs estão assim:

app.js

var app = require('./config/express')();
var rotasProdutos = require('./app/routes/produtos')(app);

app.listen(3000, function(){
    console.log("Servidor rodando");
});

lista.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Lista de produtos</title>
    </head>
<body>
    <table>
        <tr>
            <td>id</td>    
            <td>titulo</td>    
            <td>descricao</td>    
            <td>preco</td>    
        </tr>
        <%for(var i=0 ; i < lista.length ; i++) {%>
            <tr>
                <td><%=lista[i].id%></td>
                <td><%=lista[i].titulo%></td>
                <td><%=lista[i].descricao%></td>
                <td><%=lista[i].preco%></td>
            </tr>
        <%}%>
        <tr>

        </tr>    
    </table>
</body>
</html>
7 respostas

aqui está o produto.js, tinha esquecido...

module.exports = function(app){
    app.get('/produtos', function(req, res){

        var mysql = require('mysql');
        var connection = mysql.createConnection({
            host : 'localhost',
            user : 'root',
            password : 'root',
            database : 'casadocodigo_nodejs'
        });

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

        connection.end();
    });
}

Opa, antes do res.render faz um console.log(err) ? Para vermos se está acontecendo algum erro na sua consulta... Pq só olhando o código, parece está tudo ok.

Fiz dessa maneira e persiste o msmo erro...

module.exports = function(app){
    app.get('/produtos', function(req, res){

        var mysql = require('mysql');
        var connection = mysql.createConnection({
            host : 'localhost',
            user : 'root',
            password : 'root',
            database : 'casadocodigo_nodejs'
        });

        connection.query('select * from livros', function(err,results){
            console.log(err);
            res.render('produtos/lista',{lista:results});
        })

        connection.end();
    });
}

E imprimiu o que? Algum erro? A impressão será feita no console

o console do navegador n imprimiu nada, aparece na tela e no terminal só.

Oi Luciano, realmente não estou vendo nada de errado. Tem como compartilhar seu código no github, posso baixar e testar?

solução!

O problema é no meu MySQL que não esta funcionando corretamente, tentei consultar os dados e eles não existem, se tento adicionar novamente persiste o mesmo erro, acho q é na instalação pois usava o xampp antigamente e gerenciava pelo phpmyadmin... Enfim acredito ser interno msmo e estou tentando resolver não há nada errado com os arquivos do curso...