Após termos abordado os conceitos básicos e intermediários de criação de APIs em NodeJS, chegamos ao ponto crucial do nosso curso e-book: a criação de um CRUD (Create, Read, Update, Delete) com NodeJS e MongoDB, e o deploy da nossa aplicação. Este capítulo 16.13 vai te guiar passo a passo para realizar essa tarefa tão importante.
Preparando o Ambiente
Primeiramente, certifique-se de que você tem o NodeJS e o MongoDB instalados em seu sistema. Se não, você pode baixá-los e instalá-los a partir de seus sites oficiais. Além disso, precisaremos do Postman para testar nossas APIs, e do Heroku CLI para o deploy da nossa aplicação.
Criando o Projeto NodeJS
Para criar um novo projeto NodeJS, abra o terminal e navegue até o diretório onde deseja criar o projeto. Em seguida, execute o comando "npm init" para inicializar um novo projeto. Isso criará um novo arquivo "package.json" em seu diretório, que contém informações sobre o seu projeto e as dependências que ele precisa.
Instalando as Dependências
Para o nosso projeto, precisaremos de algumas dependências: express, mongoose, body-parser e nodemon. Para instalá-las, execute o comando "npm install express mongoose body-parser nodemon".
Criando o Servidor Express
Agora, vamos criar o nosso servidor Express. Crie um novo arquivo chamado "server.js" e adicione o seguinte código:
```javascript const express = require('express'); const app = express(); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Server is running on port ${port}`); }); ```Este código cria um novo servidor Express que escuta na porta 3000.
Conectando ao MongoDB
Para conectar ao MongoDB, precisamos usar o Mongoose, uma biblioteca que nos permite interagir com o MongoDB de maneira fácil e direta. Adicione o seguinte código ao seu "server.js":
```javascript const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('Could not connect to MongoDB', err)); ```Este código conecta ao MongoDB rodando localmente na sua máquina.
Criando o CRUD
Para criar o CRUD, primeiro precisamos definir um modelo para os nossos dados. Crie um novo arquivo chamado "user.model.js" e adicione o seguinte código:
```javascript const mongoose = require('mongoose'); const User = mongoose.model('User', new mongoose.Schema({ name: String, email: String, password: String })); module.exports = User; ```Este código define um modelo de usuário com três campos: nome, email e senha.
Agora, vamos criar as rotas para o nosso CRUD. Crie um novo arquivo chamado "user.routes.js" e adicione o seguinte código:
```javascript const express = require('express'); const router = express.Router(); const User = require('./user.model'); router.post('/', async (req, res) => { let user = new User({ name: req.body.name, email: req.body.email, password: req.body.password }); user = await user.save(); res.send(user); }); router.get('/', async (req, res) => { const users = await User.find(); res.send(users); }); router.get('/:id', async (req, res) => { const user = await User.findById(req.params.id); if (!user) return res.status(404).send('The user with the given ID was not found.'); res.send(user); }); router.put('/:id', async (req, res) => { const user = await User.findByIdAndUpdate(req.params.id, { name: req.body.name, email: req.body.email, password: req.body.password }, { new: true }); if (!user) return res.status(404).send('The user with the given ID was not found.'); res.send(user); }); router.delete('/:id', async (req, res) => { const user = await User.findByIdAndRemove(req.params.id); if (!user) return res.status(404).send('The user with the given ID was not found.'); res.send(user); }); module.exports = router; ```Este código cria as rotas para criar, ler, atualizar e deletar usuários.
Deploy da Aplicação
Finalmente, vamos fazer o deploy da nossa aplicação. Para isso, vamos usar o Heroku, uma plataforma de hospedagem de aplicações em nuvem. Primeiro, precisamos criar um arquivo chamado "Procfile" no diretório raiz do nosso projeto. Este arquivo diz ao Heroku como iniciar a nossa aplicação. Adicione o seguinte código ao "Procfile":
``` web: node server.js ```Em seguida, precisamos inicializar um novo repositório Git no nosso projeto. Execute os comandos "git init" e "git add ." para adicionar todos os arquivos ao repositório. Em seguida, execute "git commit -m 'Initial commit'" para fazer o commit dos arquivos.
Agora, precisamos criar uma nova aplicação no Heroku. Para isso, execute o comando "heroku create". Isso criará uma nova aplicação e adicionará um novo remote Git chamado "heroku" ao seu repositório.
Finalmente, podemos fazer o deploy da nossa aplicação. Para isso, execute o comando "git push heroku master". Isso enviará o código da nossa aplicação para o Heroku, que irá construir e iniciar a aplicação.
Parabéns! Você acabou de criar e fazer o deploy de uma aplicação CRUD com NodeJS e MongoDB! Agora você pode acessar a sua aplicação no endereço que o Heroku forneceu.