Um dos conceitos fundamentais no desenvolvimento de aplicações web é o CRUD (Create, Read, Update, Delete). Esses são os quatro tipos básicos de funcionalidades que a maioria dos sistemas web precisa realizar em algum momento. Neste capítulo, aprenderemos como implementar operações CRUD usando NodeJS e MongoDB, com foco especial no tratamento de erros.

Criando um CRUD com NodeJS e MongoDB

Para começar, precisamos de uma instância do MongoDB em execução e uma aplicação NodeJS configurada. Vamos supor que já temos uma coleção de usuários em nosso banco de dados MongoDB. Nosso objetivo é criar rotas para adicionar um novo usuário, ler usuários existentes, atualizar um usuário e deletar um usuário.

Criando um novo usuário (Create)

Para criar um novo usuário, precisamos de uma rota POST. No NodeJS, isso pode ser feito usando o pacote express. Primeiro, importamos o express e o inicializamos. Em seguida, definimos uma rota POST que aceita os dados do usuário como JSON no corpo da requisição. Usamos o método insertOne do MongoDB para adicionar o novo usuário à nossa coleção.


const express = require('express');
const app = express();
app.use(express.json());

app.post('/users', (req, res) => {
  const newUser = req.body;
  db.collection('users').insertOne(newUser, (err, result) => {
    if (err) {
      res.status(500).send({ error: 'An error occurred while creating the user' });
    } else {
      res.status(201).send(result.ops[0]);
    }
  });
});

Lendo usuários existentes (Read)

Para ler usuários existentes, precisamos de uma rota GET. Nós definimos essa rota e usamos o método find do MongoDB para obter todos os usuários de nossa coleção. O método toArray converte o resultado em um array para facilitar o manuseio.


app.get('/users', (req, res) => {
  db.collection('users').find({}).toArray((err, users) => {
    if (err) {
      res.status(500).send({ error: 'An error occurred while fetching users' });
    } else {
      res.send(users);
    }
  });
});

Atualizando um usuário (Update)

Para atualizar um usuário, precisamos de uma rota PUT. Essa rota deve incluir o ID do usuário que queremos atualizar. Usamos o método findOneAndUpdate do MongoDB para atualizar o usuário. Especificamos o ID do usuário como nosso critério de busca e passamos os novos dados do usuário.


app.put('/users/:id', (req, res) => {
  const userId = req.params.id;
  const newUserData = req.body;
  db.collection('users').findOneAndUpdate({ _id: ObjectId(userId) }, { $set: newUserData }, (err, result) => {
    if (err) {
      res.status(500).send({ error: 'An error occurred while updating the user' });
    } else {
      res.send(result.value);
    }
  });
});

Deletando um usuário (Delete)

Para deletar um usuário, precisamos de uma rota DELETE. Essa rota também deve incluir o ID do usuário que queremos deletar. Usamos o método findOneAndDelete do MongoDB para deletar o usuário.


app.delete('/users/:id', (req, res) => {
  const userId = req.params.id;
  db.collection('users').findOneAndDelete({ _id: ObjectId(userId) }, (err, result) => {
    if (err) {
      res.status(500).send({ error: 'An error occurred while deleting the user' });
    } else {
      res.send(result.value);
    }
  });
});

Tratamento de erros

O tratamento de erros é uma parte crucial do desenvolvimento de qualquer aplicação. Em todas as nossas rotas, verificamos se ocorreu um erro durante a operação do banco de dados. Se ocorreu um erro, respondemos com um status HTTP 500 e uma mensagem de erro. Isso permite que o cliente saiba que algo deu errado.

Em um ambiente de produção, você também deve considerar o registro de erros. Isso pode ser feito usando um pacote como o winston ou o morgan. Esses pacotes permitem que você registre automaticamente informações sobre erros e outras informações úteis.

Em resumo, o CRUD é um conceito fundamental no desenvolvimento de aplicações web. Com NodeJS e MongoDB, podemos implementar operações CRUD de maneira eficiente e fácil. O tratamento de erros é uma parte crucial disso, pois nos permite lidar com situações inesperadas de maneira elegante.

Agora responda o exercício sobre o conteúdo:

O que significa a sigla CRUD no contexto de desenvolvimento de aplicações web e quais operações ela representa?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Criando um CRUD com NodeJS e MongoDB: Testes unitários

Próxima página do Ebook Gratuito:

95Criando um CRUD com NodeJS e MongoDB: Testes unitários

3 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto