``` // ./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" }
}
id | nome |
1 | livro 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)