Uma das principais características que torna o NodeJS uma excelente escolha para o desenvolvimento de APIs é a sua capacidade de lidar com operações de I/O de maneira eficiente. Neste capítulo, vamos discutir como criar um CRUD (Create, Read, Update, Delete) com NodeJS e MongoDB. Vamos começar com a criação do projeto NodeJS.
Criação do Projeto NodeJS
Para começar, você precisa ter o NodeJS e o NPM (Node Package Manager) instalados em seu sistema. Você pode baixá-los e instalá-los a partir do site oficial do NodeJS. Uma vez instalado, você pode verificar a instalação executando os seguintes comandos no seu terminal:
node -v npm -v
Se ambos os comandos retornarem uma versão, isso significa que a instalação foi bem-sucedida. Agora, vamos criar um novo projeto NodeJS. Para isso, crie um novo diretório para o seu projeto e navegue até ele usando o terminal. Em seguida, inicialize um novo projeto NodeJS com o seguinte comando:
npm init -y
Isso criará um novo arquivo 'package.json' no diretório do seu projeto. Este arquivo é usado para gerenciar as dependências do seu projeto.
Instalação de Dependências
Para este projeto, precisaremos de algumas dependências. A primeira é o Express, um framework NodeJS que facilita a criação de APIs. Para instalá-lo, execute o seguinte comando:
npm install express
Em seguida, vamos precisar do Mongoose, um ORM (Object-Relational Mapping) que facilita a interação com o MongoDB. Para instalá-lo, execute o seguinte comando:
npm install mongoose
Criação do Servidor Express
Depois de instalar as dependências, vamos criar nosso servidor Express. Crie um novo arquivo chamado 'server.js' e adicione o seguinte código:
const express = require('express');
const app = express();
const port = 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
Este é um servidor Express básico que escuta na porta 3000. Você pode iniciar o servidor com o seguinte comando:
node server.js
Criação do Modelo Mongoose
Antes de podermos interagir com o MongoDB, precisamos definir um modelo Mongoose. Este modelo representa a estrutura dos nossos dados. Para este exemplo, vamos criar um modelo para um 'User'. Crie um novo arquivo chamado 'User.js' e adicione o seguinte código:
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
name: String,
email: String,
password: String,
});
module.exports = mongoose.model('User', UserSchema);
Este é um modelo básico que define um 'User' com um nome, email e senha.
Conectando ao MongoDB
Antes de podermos usar o nosso modelo, precisamos conectar ao MongoDB. Adicione o seguinte código ao 'server.js':
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/myapp', { useNewUrlParser: true, useUnifiedTopology: true });
Isso vai conectar ao MongoDB que está rodando localmente na porta 27017. Se a conexão for bem-sucedida, você poderá começar a usar o seu modelo para criar, ler, atualizar e deletar usuários no MongoDB.
Criando Rotas CRUD
O próximo passo é criar as rotas CRUD. Cada rota será responsável por uma operação específica. Por exemplo, a rota 'POST /users' será usada para criar um novo usuário, enquanto a rota 'GET /users/:id' será usada para ler um usuário específico. Adicione as seguintes rotas ao 'server.js':
const User = require('./User');
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({ message: 'User deleted' });
});
Com estas rotas, você tem um CRUD completo com NodeJS e MongoDB. Agora você pode criar, ler, atualizar e deletar usuários usando a sua API.
Em resumo, criar um CRUD com NodeJS e MongoDB é um processo simples e direto. Com o NodeJS, você pode criar APIs eficientes e escaláveis, enquanto o MongoDB permite que você armazene e recupere dados de maneira eficiente. Combinando os dois, você pode criar APIs poderosas que podem lidar com grandes volumes de dados e tráfego.