Criar uma app CRUD com Node.js + MongoDB (Parte 1)

O Node.js é um interpretador de código JavaScript que funciona do lado do servidor. Esta plataforma permite aos programadores o desenvolvimento de aplicações em rede, em tempo real e de alta escalabilidade, de uma forma simples e rápida. O Node.js é baseado no interpretador V8 da Google.

Aprenda a criar uma app CRUD com recurso ao Node.js e MongoDB para registo de smartphones.

O que significa CRUD?

CRUD são as siglas para Create, Read, Update e Delete. Estas são as quatro operações básicas utilizadas em bases de dados relacionais (RDBMS).

A abreviação CRUD mapeada para o padrão ISO/SQL:

  • Create — INSERT
  • Read — SELECT
  • Update — UPDATE
  • Delete — DELETE

Arquitetura REST

REST — REpresentational State Transfer é um modelo de arquitetura que usa o protocolo HTTP para comunicação. Existem várias representações para apresentar um recurso como, por exemplo, XML, JSON, sendo que este último é o mais usado. Saber mais aqui.

Criar uma app CRUD com Node.js + MongoDB

MongoDB

O MongoDB é um novo paradigma no que toca aos conceitos do que são as bases de dados tradicionais, pois este SGBD (sendo uma base de dados NoSQL) guarda todas as informações importantes num único documento, livre de esquemas onde possui ainda identificadores únicos, possibilitando a consulta dos documentos através de métodos avançados de agrupamento e filtragem permitindo com isto redundância e consistência. Saber mais aqui.

Criar uma app CRUD com Node.js + MongoDB

Vamos começar…

Para criarem uma app CRUD com Node.js + MongoDB, devem seguir estes passos:

Nota: Vamos considerar uma máquina com Ubuntu como sendo o sistema para este projeto.

Passo 1) Instalar o Node.js no Ubuntu e derivado

A instalação do Node.js é relativamente simples. Para tal basta abrir o terminal e executar os seguintes comandos:

sudo apt-get update
sudo apt-get install nodejs
Passo 2) Criar diretório para projeto
mkdir smartphones_app
Passo 3) Iniciar Projeto

Para iniciar o projeto deve executar o comando:

npm init

Indiquem os dados solicitados para a criação do ficheiro package.json. Este ficheiro guarda informações sobre o projeto e também sobre as dependências (pacotes) do mesmo.

Passo 4) Instalação dos pacotes necessários

Para este projeto vamos precisar de instalar os módulos:

Express.js — uma framework para Node que permite o desenvolvimento de aplicações web de uma forma muito simples body-parser — pacote que pode ser usado para manipular solicitações JSON. mongoose – Base de Dados de suporte ao projeto

Para instalar estes pacotes podem usar o comando:

npm install --save express body-parser mongoose

Passo 5) Criar servidor (com Node.js)

Para começar vamos criar o ficheiro index.js (indicado no package.json)

touch index.js

Dentro do nosso ficheiro associamos as dependências instaladas anteriormente (Express.js e body-parser) e inicializamos a app.

// index.js
const express = require('express');
const bodyParser = require('body-parser');
// inicializar app express
const app = express();

O próximo passo é indicar o porto lógico que ficará associado ao servidor criado pelo Node.js. Vamos considerar o porto 8000.

let porto = 8000;
app.listen(porto, () => {
    console.log('Servidor em execução no porto' + porto);
});

Para colocar em execução o servidor devem usar o comando:

node index.js

E está feito! Agora vamos criar toda a estrutura de aplicação, definindo as Routes, os Controllers e o Modelo.

Organização da Aplicação (MVC)

A nossa aplicação deverá seguir o “design” MVC. M de Model (código para o nosso modelo de base de dados), V de View (layout) e C de controllers (parte lógica da app (Como a app lida com as solicitações recebidas e as respostas enviadas).

Existem também as Routes que indicam ao cliente (browser ou app mobile) qual o controller a usar, de acordo com o url/path solicitado.

Dentro da nossa pasta smartphones_app vamos então criar a seguinte estrutura (podem usar o comando mkdir -p controllers models routes views)

  • controllers
  • models
  • routes
  • views

Criar uma app CRUD com Node.js + MongoDB

Criar Modelo

Vamos começar por definir o nosso MODEL. Para isso vamos criar, dentro do diretório models, um ficheiro com o nome smartphones.model.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let SmartphoneSchema = new Schema({
nome: {type: String, required: true, max: 100},
marca: {type: Number, required: true},
});
// Exportar o modelo
module.exports = mongoose.model('Smartphone', SmartphoneSchema);

Ao exportarmos o nosso modelo, podemos usá-lo em outros ficheiros do projeto. Com isto temos a parte M do design MVC concluída!

Criar Routes

Vamos criar, dentro do diretório routes, um ficheiro com o nome smartphones.route.js e colocar o seguinte código:

const express = require(‘express’);
const router = express.Router();
// Colocar controller que ainda não foi criado
const smartphone_controller = require(‘../controllers/smartphone.controller’);
// teste simples
router.get(‘/testar’, smartphone_controller.test);
module.exports = router;

Criar Controllers

const Smartphone = require('../models/smartphones.model');
exports.test = function (req, res) {
    res.send('Olá! Teste ao Controller');
};

Vamos agora ao ficheiro principal (index.js) e adicionar a route.

const express = require('express');
const bodyParser = require('body-parser');
const smartphone = require('./routes/smartphones.route'); // Importa rota
const app = express();
app.use('/smartphones', smartphones);
 
let porto = 8000;
app.listen(porto, () => {
    console.log('Servidor em execução no porto' + porto);
});

Testar

Para testarem basta usar o endereço localhost:8000/smartphones/testar (definido na Route). Se o resultado for o seguinte, então a sua primeira Route está a funcionar.Criar uma app CRUD com Node.js + MongoDB

De seguida, vamos criar a base de dados e ligar o projeto à base de dados.

Base de Dados MongoDB no mLab

Para a Base de Dados de suporte ao nosso projecto vamos usar o mongoDB, recorrendo ao serviço mLab. O MongoDB é um novo paradigma no que toca aos conceitos do que são as bases de dados tradicionais, pois este SGBD (sendo uma base de dados NoSQL) guarda todas as informações importantes num único documento, livre de esquemas onde possui ainda identificadores únicos, possibilitando a consulta dos documentos através de métodos avançados de agrupamento e filtragem permitindo com isto redundância e consistência.

O mLab é um Database-as-a-Service quem tem atualmente mais de meio milhão de bases de dados. Com este serviço pode guartar até 500 MB de dados, gratuitamente.

Criar uma app CRUD com Node.js + MongoDB (Parte 3)

Criar Base de Dados

Para começar devem criar uma conta aqui. Em seguida criem uma Base de Dados carregando em Create New

Em seguida indiquem o Cloud Provider e o tipo de Plano (Plan Type) e carreguem em Continue.

Criar uma app CRUD com Node.js + MongoDB (Parte 3)

Escolham em que DataCenter da Google pretendem guardar os vossos dados. Para seguir carreguem em Continue.

Criar uma app CRUD com Node.js + MongoDB (Parte 3)

Indiquem agora um nome para a vossa Base de Dados MongoDB

Criar uma app CRUD com Node.js + MongoDB (Parte 3)

Em seguida é solicitado para confirmarem o plano que indicaram e, se tudo tiver sido corretamente configurado, a Base de Dados definida será criada.

Criar uma app CRUD com Node.js + MongoDB (Parte 3)

Criar Utilizadores

O próximo passo é criar um utilizador para acesso à Base de Dados. Para isso entrem na base de dados criada e em seguida escolha a opção Add database user.

Criar uma app CRUD com Node.js + MongoDB (Parte 3)

Preencham agora os dados solicitados para a criação de um utilizador.

Criar uma app CRUD com Node.js + MongoDB (Parte 3)

E está tudo ao nível da criação da base de dados.

Para finalizar esta app, seguir o resto dos processos aqui.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s