Este capítulo é dedicado a uma das partes mais importantes do desenvolvimento de APIs: a criação de um CRUD (Create, Read, Update, Delete) com NodeJS e MongoDB. Iremos criar as rotas para as operações do CRUD e aprenderemos como interagir com o banco de dados MongoDB.
Primeiro, vamos entender o que é CRUD. CRUD é um acrônimo para Create (Criação), Read (Leitura), Update (Atualização) e Delete (Exclusão). Estas são as quatro operações básicas que um sistema deve ter para gerenciar dados. Em nossa API, vamos criar rotas para executar essas operações em nosso banco de dados MongoDB.
Para começar, precisamos de um ambiente de desenvolvimento NodeJS configurado e uma instância do MongoDB rodando. Se você ainda não tem isso configurado, consulte os capítulos anteriores deste e-book.
1. Configurando o Express e o Mongoose
Primeiro, vamos configurar o Express, que é um framework para NodeJS que nos ajuda a gerenciar as rotas e requisições HTTP. Além disso, vamos usar o Mongoose, que é uma biblioteca do NodeJS para MongoDB que nos permite trabalhar com o banco de dados de forma mais fácil e segura.
Para instalar essas dependências, execute o seguinte comando no terminal:
npm install express mongoose
Depois de instalar essas dependências, vamos configurá-las em nosso arquivo principal do NodeJS. Vamos criar uma instância do express e conectar ao MongoDB usando o Mongoose.
const express = require('express');
const mongoose = require('mongoose');
const app = express();
mongoose.connect('mongodb://localhost:27017/myapp', {useNewUrlParser: true, useUnifiedTopology: true});
2. Criando o modelo do MongoDB
Antes de criar as rotas, precisamos definir o modelo de dados que vamos usar no MongoDB. Para isso, vamos usar o Mongoose para criar um esquema de dados.
const UserSchema = new mongoose.Schema({
name: String,
email: String,
password: String
});
const User = mongoose.model('User', UserSchema);
3. Criando as rotas para o CRUD
Agora que temos o modelo de dados, podemos criar as rotas para as operações do CRUD. Vamos criar uma rota para cada operação: criar, ler, atualizar e excluir.
app.post('/users', async (req, res) => {
const user = new User(req.body);
await user.save();
res.send(user);
});
app.get('/users', async (req, res) => {
const users = await User.find();
res.send(users);
});
app.get('/users/:id', async (req, res) => {
const user = await User.findById(req.params.id);
res.send(user);
});
app.put('/users/:id', async (req, res) => {
const user = await User.findByIdAndUpdate(req.params.id, req.body);
res.send(user);
});
app.delete('/users/:id', async (req, res) => {
await User.findByIdAndDelete(req.params.id);
res.send('User deleted');
});
Essas rotas permitem-nos criar, ler, atualizar e excluir usuários em nosso banco de dados MongoDB. Note que estamos usando operações assíncronas (async/await) para lidar com as operações do banco de dados, pois elas podem levar algum tempo para serem concluídas.
4. Testando as rotas
Para testar as rotas, podemos usar uma ferramenta como Postman ou Insomnia. Basta fazer uma requisição para a rota e método HTTP correspondente e verificar se a operação foi bem-sucedida.
Com isso, concluímos a criação de um CRUD com NodeJS e MongoDB. Este é um passo fundamental para a criação de APIs, pois nos permite gerenciar dados de forma eficiente e segura. Continue acompanhando os próximos capítulos para aprender mais sobre o desenvolvimento de APIs com NodeJS.