CRUD NodeJS - #10 Modularização e Conclusão
07/10/2019Nesse tutorial falaremos um pouquinho mais modularização no Javascript com NodeJS e como instalar um domínio próprio no Heroku.
Modularização
Para organizar de forma mais eficiente nosso sistema, o NodJS nos permite criar módulos personalizados para o nosso app. No caso, separaremos em um módulo específico todas as nossas configurações de banco de dados. Para isso, criaremos dentro da pasta node_modules a pasta crud que ficará responsável por todas as configurações do nosso banco de dados.
Veja abaixo como ficou nosso código:
const mysql=require('mysql');
class ClassCrud{
constructor()
{
this.sql=mysql.createPool({
user: "root",
password: "",
host: "localhost",
database: "nodejs"
});
}
read(req,res)
{
if(!req.params.id){
this.sql.getConnection(function(err,connection){
connection.query("select * from user order by id asc",function(err,results,fields){
res.render('select',{data:results});
});
});
}else{
this.sql.getConnection(function(err,connection){
sql.query("select * from user where id=? order by id asc",[req.params.id],function(err,results,fields){
res.render('select',{data:results});
});
});
}
}
create(req,res)
{
this.sql.getConnection(function(err,connection){
connection.query("insert into user values (?,?,?)",[req.body.id,req.body.name,req.body.age]);
res.render('controllerForm',{name:req.body.name});
});
}
deletes(req,res)
{
this.sql.getConnection(function(err,connection){
connection.query("delete from user where id=?",[req.params.id]);
res.render('deletar');
});
}
update(req,res,controller=null)
{
if(controller==null){
this.sql.getConnection(function(err,connection){
connection.query("select * from user where id=?",[req.params.id],function(err,results,fields){
res.render('update',{id:req.params.id,name:results[0].name,age:results[0].age});
});
});
}else{
this.sql.getConnection(function(err,connection){
connection.query("update user set name=?,age=? where id=?",[req.body.name,req.body.age,req.body.id]);
res.render('controllerUpdate');
});
}
}
}
module.exports=ClassCrud;
No core do nosso sistema (app.js) faremos a instância desse novo módulo:
const crud=require('crud');
let cruds=new crud();
Nossas rotas serão chamadas através do método da ClassCrud. Ficará assim:
//Routes and Templates
app.get("/",function(req,res){res.render('index');});
app.get("/inserir",function(req,res){res.render("inserir");});
app.get("/select/:id?",function(req,res){cruds.read(req,res);});
app.post("/controllerForm",urlencodeParser,function(req,res){cruds.create(req,res);});
app.get('/deletar/:id',function(req,res){cruds.deletes(req,res);});
app.get("/update/:id",function(req,res){cruds.update(req,res);});
app.post("/controllerUpdate",urlencodeParser,function(req,res){cruds.update(req,res,'controller');});
Vantagens
- Modularização
- Código enxuto
- Velocidade de processamento
- Segurança
- Instalação simplificada pelo NPM
- Utilizar a mesma linguagem tanto para front quanto para backend
- Comunidade ativa
Domínio próprio
Você pode também inserir seu domínio próprio no Heroku. Para isso acesse: settings >> add domain. Posteriormente, basta mudar o dns no registro.br.
Então é isso, espero que tenham gostado do curso. Estude bastante Javascript, pois vale bastante a pena. Sucesso nos códigos e na vida!