A seguir, você encontrará um tutorial completo sobre como implementar requisições assíncronas utilizando controllers em uma aplicação Node.js com Express. Esse método é muito utilizado para organizar a lógica de negócios e interagir com bancos de dados ou APIs externas sem bloquear a execução do servidor.
Em aplicações web modernas, é comum que operações de E/S – como consultas a banco de dados, chamadas a APIs ou leitura de arquivos – sejam realizadas de forma assíncrona. Utilizar async/await dentro dos controllers torna o código mais limpo, legível e facilita o tratamento de erros. Esse tutorial abordará:
Uma organização comum para um projeto que utiliza controllers assíncronos pode ser a seguinte:
.
├── config/
│ └── db.js
├── controllers/
│ └── usuarioController.js
├── models/
│ └── usuarioModel.js
├── routes/
│ └── usuarioRoutes.js
├── views/
│ └── index.ejs
├── public/
│ └── css/
│ └── styles.css
├── .env
├── .gitignore
└── server.js
Aqui, simulamos uma consulta ao "banco de dados" utilizando uma Promise que resolve após 1 segundo.
// models/usuarioModel.js
const usuarios = [
{ id: 1, nome: 'João' },
{ id: 2, nome: 'Maria' }
];
function findAll() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(usuarios);
}, 1000); // Simula uma operação assíncrona (ex.: consulta ao banco)
});
}
module.exports = { findAll };