Este capítulo do nosso e-book é dedicado a um aspecto fundamental do desenvolvimento de APIs com NodeJS: a criação de um CRUD (Create, Read, Update, Delete) utilizando MongoDB como banco de dados. Vamos abordar passo a passo como criar, ler, atualizar e deletar dados em um banco de dados MongoDB usando NodeJS.
Antes de começarmos, é importante entender o que é MongoDB. MongoDB é um banco de dados orientado a documentos, que armazena dados em documentos BSON, uma representação binária de JSON. Isso o torna muito flexível e escalável, perfeito para trabalhar com NodeJS.
Configurando o Ambiente
Primeiro, precisamos instalar o NodeJS e o MongoDB em nosso sistema. Depois de instalados, vamos criar um novo projeto NodeJS e instalar algumas dependências. Vamos usar o 'Express' para criar o servidor, o 'mongoose' para interagir com o MongoDB e o 'body-parser' para analisar o corpo das solicitações HTTP.
$ npm init $ npm install express mongoose body-parser
Depois de instalar essas dependências, vamos configurar nosso servidor Express e conectar ao MongoDB usando o Mongoose.
const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const app = express(); mongoose.connect('mongodb://localhost/crud-nodejs-mongodb', {useNewUrlParser: true, useUnifiedTopology: true}); app.use(bodyParser.json()); app.listen(3000, () => console.log('Server running on port 3000'));
Criando o Modelo de Dados
Antes de podermos trabalhar com nossos dados, precisamos definir um modelo de dados. Vamos criar um modelo de 'User' com campos 'name' e 'email'.
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const UserSchema = new Schema({ name: String, email: String }); module.exports = mongoose.model('User', UserSchema);
Criando as Rotas CRUD
Agora que temos nosso modelo de dados, podemos criar nossas rotas CRUD. Vamos criar um arquivo 'routes.js' e importar nosso modelo de 'User'.
const express = require('express'); const User = require('./models/User'); const router = express.Router();
Vamos começar com a rota 'Create'. Essa rota receberá uma solicitação POST com os dados do usuário e criará um novo usuário no banco de dados.
router.post('/users', async (req, res) => { const user = new User(req.body); await user.save(); res.json({status: 'User Created'}); });
A rota 'Read' buscará todos os usuários no banco de dados e retornará uma resposta JSON com os dados dos usuários.
router.get('/users', async (req, res) => { const users = await User.find(); res.json(users); });
A rota 'Update' receberá uma solicitação PUT com o id do usuário e os novos dados do usuário. Ele encontrará o usuário no banco de dados e atualizará seus dados.
router.put('/users/:id', async (req, res) => { await User.findByIdAndUpdate(req.params.id, req.body); res.json({status: 'User Updated'}); });
Finalmente, a rota 'Delete' receberá uma solicitação DELETE com o id do usuário. Ele encontrará o usuário no banco de dados e o removerá.
router.delete('/users/:id', async (req, res) => { await User.findByIdAndRemove(req.params.id); res.json({status: 'User Deleted'}); });
Com isso, temos um CRUD completo com NodeJS e MongoDB. Esse é um exemplo básico, mas você pode expandir isso para se adequar às suas necessidades. Esperamos que este capítulo tenha sido útil para você aprender a criar um CRUD com NodeJS e MongoDB.