Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Consultando o banco de dados

``` // ./app/routes/produtos.js module.exports = function (v_app) { v_app.get('/produtos', function (req, res) { //res.send("

Listagem de produtos

") //tranferido para o arquivo ./views/produtos/lista.ejs console.log("atendendo a requisicao");

var v_mysql = require('mysql');

var v_connection = v_mysql.createConnection({ host : 'LocalHost', user : 'root', password : '', database : 'casadocodigo_nodejs' });

v_connection.query('select * from produtos',function(err,results){ res.send(results);

});

v_connection.end();

res.render("produtos/lista"); });

};

//app.js

// estes comandos foram transferidos para o arquivos express.js //var express = require('express'); //var app = express(); //app.set('view engine', 'ejs');

//depois de implementado o arquivo express.js fica assim var v_app = require ('./config/express')();

//código transferido para o arquivo ./app/routes/produtos.js //app.get('/produtos', function (req, res) { //res.send("

Listagem de produtos

") //tranferido para o arquivo ./views/produtos/lista.ejs // console.log("atendendo a requisicao"); // res.render("produtos/lista"); //});

//depois de implementado o arquivo produtos.js fica assim var rotasProdutos = require('./app/routes/produtos')(v_app);

v_app.listen(3000, function () { console.log("servidor rodando na porta 3000");

});

//./config/express

//assim sempre vai carregar a o express com uma nova versão //module.exports = function () { // console.log("modulo ta sendo carregado"); // var app = require('express')(); // app.set('view engine', 'ejs'); // return app; //};

// ou assim carrega apenas uma vez a versão do express console.log("modulo ta sendo carregado"); var app = require('express')(); app.set('view engine', 'ejs'); app.set('views', './app/views');

module.exports = function () { return app;

};

pacage.json { "name": "casadocodigo", "version": "1.0.0", "description": "Site da Casa do Código - Feito pelo Cacá", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Caca", "license": "ISC", "dependencies": { "ejs": "^2.3.3", "express": "^4.15.2", "mysql": "^2.13.0" }

}

idnome
1livro de node js
```.

Por favor podem me ajudar ?? Fiz as configurações do banco de dados, criei a base e a tabelas

C:\Caca\Alura\Node\AppNode\casadocodigo>mysql -u root -p casadocodigo_nodejs Enter password: ** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 22 Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> desc produtos -> ; +-----------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | titulo | varchar(255) | YES | | NULL | | | descricao | text | YES | | NULL | | | preco | decimal(10,2) | YES | | NULL | | +-----------+---------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)

mysql>

mysql> select * from produtos; +----+--------------------------+-------------------------------------+-------+ | id | titulo | descricao | preco | +----+--------------------------+-------------------------------------+-------+ | 1 | Comecando com nodejs | livro introdutório sobre nodejs | 39.90 | | 2 | Comecando com javascript | livro introdutório sobre javascript | 39.90 | | 3 | Comecando com express | livro introdutório sobre express | 39.90 | +----+--------------------------+-------------------------------------+-------+ 3 rows in set (0.00 sec)

Quando efetivo a consulta no banco de dados esta retornando este erro: C:\Caca\Alura\Node\AppNode\casadocodigo>nodemon app.js [nodemon] 1.11.0 [nodemon] to restart at any time, enter rs [nodemon] watching: . [nodemon] starting node app.js modulo ta sendo carregado servidor rodando na porta 3000 atendendo a requisicao C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\mysql\lib\protocol\Parser.js:79 throw err; // Rethrow non-MySQL errors ^

Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11) at ServerResponse.header (C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\express\lib\response.js:725:10) at ServerResponse.send (C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\express\lib\response.js:170:12) at ServerResponse.json (C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\express\lib\response.js:256:15) at ServerResponse.send (C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\express\lib\response.js:158:21) at Query._callback (C:\Caca\Alura\Node\AppNode\casadocodigo\app\routes\produtos.js:17:17) at Query.Sequence.end (C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\mysql\lib\protocol\sequences\Sequence.js:86:24) at Query._handleFinalResultPacket (C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\mysql\lib\protocol\sequences\Query.js:137:8) at Query.EofPacket (C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\mysql\lib\protocol\sequences\Query.js:121:8) at Protocol._parsePacket (C:\Caca\Alura\Node\AppNode\casadocodigo\node_modules\mysql\lib\protocol\Protocol.js:280:23)

1 resposta
solução!

opa, ficou um pouco complicado de ler o código pq a formatação não pegou.. enfim, o erro é:

Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader

Quer dizer que vc gera uma response numa rota sua e, ainda dentro da mesma rota, gera outra response.. provavelmente dentro de um if... se tiver fazendo isso em um if, que não tenha else, coloca a instrução return ; dentro do if, para parar a execução da função.