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.