Até a aula 7 estava funcionando, depois quando eu alterei a parte de conexão com banco de dados começou a aparecer esse erro:
TypeError: C:\Users\Gisele\Documents\Alura\Node\casadocodigo\app\views\produtos\lista.ejs:10 8|
10| <% for(var i=0; i 11|
Cannot read property 'length' of undefined at eval (eval at (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\ejs\lib\ejs.js:491:12), :11:28) at returnedFn (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\ejs\lib\ejs.js:520:17) at View.exports.renderFile [as engine] (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\ejs\lib\ejs.js:374:31) at View.render (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\express\lib\view.js:126:8) at tryRender (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\express\lib\application.js:639:10) at EventEmitter.render (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\express\lib\application.js:591:3) at ServerResponse.render (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\express\lib\response.js:960:7) at Query._callback (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\app\routes\produtos.js:8:17) at Query.Sequence.end (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\mysql\lib\protocol\sequences\Sequence.js:86:24) at Query.ErrorPacket (C:\Users\Gisele\Documents\Alura\Node\casadocodigo\node_modules\mysql\lib\protocol\sequences\Query.js:94:8)
Não sei se eu pulei alguma etapa ou faltou algum código:
produtosBanco
module.exports = function(){
this.lista = function(connection, callback){
connection.query('select * from produtos', callback);
}
return this;
}
connectionFactory
var mysql = require('mysql');
function createDBConnection(){
return mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'casadocodigo_nodejs'
});
}
module.exports = function() {
return createDBConnection;
}
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(erros, resultados){
res.render('produtos/lista', {lista: resultados});
});
connection.end();
});
}
lista.ejs
<html>
<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].preco %></td>
<td><%= lista[i].descricao%></td>
</tr>
<% } %>
</table>
</body>
</html>
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;
}