Boa noite, travei nessa aula pessoa. Seguinte, quando chamo a url "http://localhost:3000/produtos", me retorna um erro bastante claro: "Cannot read property 'length' of undefined", eu leio o lenght de lista que vem da função "produtosLista". Eu já debugei essa função e ela vem nula desde o início.
Não há problema com o acesso aos bancos de dados, pois se volto a alguns passos anteriores, quando acessava o banco direto de "produtos.js" retorna os dados e joga na tela normalmente. A aplicação sobe normalmente, só da o erro quando chamo a url. Segue os fontes:
//////////////////////////////////////////////////////////////// //lista.ejs //////////////////////////////////////////////////////////////// <!DOCTYPE html>
Id Nome Descricao Preço <% for(var i = 0; i < lista.length; i++){ %> <%= lista[i].id %> <%= lista[i].titulo %> <%= lista[i].descricao %> <%= lista[i].preco %> <% } %>//////////////////////////////////////////////////////////////// // produtos.js //////////////////////////////////////////////////////////////// module.exports = function(app){ app.get('/produtos', function(req, res){
var connection = app.infra.connectionFactory(); var produtosBanco = app.infra.produtosBanco;
produtosBanco.lista(connection, function(errors, resultados){ res.render('produtos/lista', {lista: resultados}); });
connection.end(); }); }
//////////////////////////////////////////////////////////////// // produtosBanco.js ////////////////////////////////////////////////////////////////
module.exports = function(){ this.lista = function(connection, callback){ connection.query('select * from produtos', callback); } return this; }
//////////////////////////////////////////////////////////////// // express.js ////////////////////////////////////////////////////////////////
var express = require('express'); var load = require('express-load');
module.exports = function() {
var app = express(); app.set('view engine', 'ejs'); app.set('views', './app/views');
load('routes', {cwd: 'app'}) .then('infra') .into(app);
return app; }
//////////////////////////////////////////////////////////////// // connectionFactory.js ////////////////////////////////////////////////////////////////
var mysql = require('mysql');
var connectMYSQL = function(){ return mysql.createConnection({ host: 'localhost', user: 'root', password: '2013002720', database: 'casadocodigo_nodejs' }); }
module.exports = function(){ return connectMYSQL; }
//////////////////////////////////////////////////////////////// // app.js ////////////////////////////////////////////////////////////////
var app = require('./config/express')(); var rotasProdutos = require('./app/routes/produtos')(app);
app.listen(3000, function(){ console.log('Servidor rodando...'); });
Muito obrigado pela ajuda!