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

EJS reproduz TD's mas não retorna os dados

Olá pessoal, não estou usando o MySQL, tive muita dificuldade para instalar então fui para o DB2 na nuvem que tenho mais familiaridade. No meu arquivo lista.ejs não consigo listar os produtos que tenho cadastrado no banco, porem vejo que ele cria as linhas e colunas. Alguém pode ajudar com uma luz?

Aqui esta meu código

Abraços

5 respostas

Oi Yuri, isso no mínimo é estranho, meu chute seria que o banco está com as linhas vazias ou coisa assim. Aquele console.log que você dá no data no route antes de renderizar a view, ele exibe os produtos certinho?

Sim Wanderson, ele me retorna os quatro registros que eu inseri na mão, justamente para testar a aplicação. Vou tentar outro banco para ter acesso, porque de fato o MySQL não rolou instalar.

solução!

Se as linhas estão sendo impressas com valores vazios para cada coluna, o problema pode ser que o formato da resposta não é igual ao que foi programado na view.

Para validar isso, faça o seguinte teste no seu arquivo routes/produtos:

connection.query(sql, (err, data) => {
            if (err){
                console.log('houve um erro');
                console.log(err);
                return;
            }

            console.log(data);
            //Verificando o formato da resposta
            for(var i=0;i<data.length;i++) {
                console.log('Linha Produto ');
                console.log(i);
                console.log(data[i]);
                console.log('Campos Produto:');
                console.log(data[i].id);
                console.log(data[i].nome);
                console.log(data[i].descricao);
                console.log(data[i].valor);
            }
            res.render('produtos/lista', { lista: data });
            connection.close();
        });

Yuri, tudo bem? Tenta colocar um objeto literal ali no render, um array com os objetos diretos, assim você valida que é um problema no ejs mesmo ao invés de ser no banco.

Daniel, Wanderson Muito obrigado pela ajuda de vocês, de fato usar o array ajudou pois notei que os campos são case-sensitive, e os nomes dos campos no DB estavam em caixa alta. Então alterei e trouxe o dado certinho na tela.

Grande abraço.