quarta-feira, 7 de outubro de 2015

Node.js e MongoDB na prática!

Na wiki oficial sobre módulos do Node.js https://github.com/joyent/node/wiki/modules existem cerca de 1100 módulos para Node.js e existem 15 módulos para MongoDB com Node.js.
Desses 15 módulos apenas testei 4 pelo qual 3 deles fiquei meio perdido por falta de uma clara documentação e o módulo que tive mais afinidade e facilidade em usar foi o mongoq, inclusive até conheci o autor desse módulo, um chinês muito gente boa que me ajudou, ensinando as boas práticas do seu módulo.
Abaixo irei explicar um pouco de código para criar um mini-aplicativo de cadastro de usuários. Lembrando que utilizarei também o Express que permitie criar as rotas da aplicação, pois o código abaixo apenas apresentarei como fazer um simplescontroller criando as rotas e explorando as funcionalidades do MongoQ, mas não entrarei em detalhes sobre o Express, pois não é o objetivo desse post.
Primeiro, para começarmos a brincadeira, instale os seguintes módulos:
npm install express mongoq
Agora crie o arquivo app.js e mãos a obra!
// Instanciando os módulos Express e Mongoq
var express = require('express');
var mongoq = require('mongoq');

// Configurando a execução do banco MongoDB
var COLLECTION = 'collection_teste';
var DB = 'banco_teste';
var db = mongoq(DB);
var collection = db.collection(COLLECTION);

// Iniciando o servidor Express
var app = module.exports = express.createServer();
// Configuração básica do servidor Express
app.configure(function(){
   app.use(express.bodyParser());
   app.use(express.methodOverride());
   app.use(app.router);
});

// Rota GET para listar os usuários
app.get('/usuarios', function(req, res){
   // Fazendo uma consulta no banco de dados
   collection.find().toArray(function(err, result){
      res.render('index', { usuarios : result });
   });
});

// Rota GET para consultar um usuário
app.get('/usuario/:id', function(req, res){
   // Recebendo os parâmetros de um query string
   var id = req.params.id;
   // Fazendo uma consulta no banco de dados
   var params = {usuario : {id: id}};
   collection.find(params).toArray(function(err, result){
      res.render('ver', { usuario : result.usuario });
   });
});

// Rota POST para cadastrar um usuário
app.post('/usuario', function(req, res){
   // Recebendo os parâmetros da requisição
   var usuario = req.body.usuario;
   // Persistindo o novo usuário
   collection.insert({usuario : usuario});
   res.redirect('/usuarios');
});

// Rota PUT para atualizar um usuário
app.put('/usuario/:id', function(req, res){
   // Recebendo os parâmetros de um query string
   var id = req.params.id;
   // Recebendo os parâmetros da requisição
   var usuario = req.body.usuario;
   // Atualizando dados do usuário que possuir este id
   collection.update({usuario: {id: id }}, {usuario : usuario});
       res.redirect('/usuarios');
   });

// Rota DELETE para excluir um usuário
app.del('/usuario/:id', function(req, res){
   // Recebendo os parâmetros de um query string
   var id = req.params.id;
   // Excluindo o usuário do banco de dados
   collection.remove({usuario : {id: id }});
   res.redirect('/usuarios');
});
Na prática este simples código já exemplifica o poder que Node.js + MongoDB + Express pode fazer.
Para conhecer em mais detalhes essas tecnologias visite:
fonte: http://udgwebdev.com/um-pouco-de-node-js-e-mongodb-na-pratica/

Vitor Yudi Hansen