Leodario.com

Leodario.com – Tudo sobre Tecnologia

Aula 57 – API JavaScript, Node.js e Express – Seeding – Dados iniciais

Imagem destacada da aula de API

Introdução (3 min)

Imagine um restaurante recém-inaugurado. As mesas estão impecáveis, o cardápio reluzente, mas a cozinha… vazia! Sem ingredientes, não há como servir os clientes. Da mesma forma, uma API, por mais bem estruturada que seja, precisa de dados iniciais para funcionar. Esse processo de preencher o “banco de dados” da sua API com informações iniciais é chamado de seeding.

Nesta aula, vamos construir um sistema de seeding robusto para uma API Node.js/Express, garantindo que, desde o primeiro acesso, ela tenha informações relevantes para entregar. Isso é fundamental para testes, demonstrações e, em alguns casos, até para o funcionamento básico da aplicação em produção.

No contexto do ecossistema Node.js/Express, o seeding geralmente envolve a interação com um banco de dados, seja ele relacional (como PostgreSQL ou MySQL) ou não-relacional (como MongoDB). Vamos explorar essas opções e implementar uma solução prática.

Conceito Fundamental (7 min)

Seeding, em termos técnicos, é o ato de popular um banco de dados com um conjunto inicial de dados. Essa população inicial viabiliza o funcionamento imediato da API e proporciona uma base para testes e desenvolvimento. Pense nisso como a “receita base” da sua aplicação.

Casos de uso em produção incluem a criação de contas administrativas padrão, categorias de produtos em um e-commerce, ou dados geográficos em um aplicativo de mapas. Integra-se com outras tecnologias como ORMs (Object-Relational Mappers) para facilitar a manipulação dos dados.

As vantagens do seeding são claras: agilidade no desenvolvimento, ambiente de testes pronto para uso, demonstrações mais realistas. A principal desvantagem reside no gerenciamento do processo em diferentes ambientes (desenvolvimento, teste, produção), que requer cuidado para evitar sobrescrever dados valiosos.

Implementação Prática (10 min)

Vamos criar um script de seeding para um banco de dados MongoDB, utilizando o Mongoose como ORM. Assumimos que você já tem um projeto Node.js/Express configurado com o Mongoose.

// seeds/users.js
const mongoose = require('mongoose');
const User = require('../models/User'); // Seu modelo de usuário

const seedUsers = async () => { try { await mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true }); // Conexão com o MongoDB (HostGator Plano M usa variáveis de ambiente)

await User.deleteMany({}); // Limpa a coleção de usuários (cuidado em produção!)

const users = [ { nome: 'Administrador', email: '[email protected]', senha: 'senhaSegura123' }, { nome: 'Usuário Teste', email: '[email protected]', senha: 'senhaTeste456' }, ];

await User.insertMany(users); // Insere os usuários

console.log('Dados iniciais inseridos com sucesso!'); process.exit(0); // Encerra o script } catch (error) { console.error('Erro ao inserir dados iniciais:', error); process.exit(1); } };

seedUsers();


Para executar o script:

📚 Informações da Aula

Curso: API Completo - Node.js & Express

Tempo estimado: 25 minutos

Pré-requisitos: JavaScript básico

node seeds/users.js

Este script se conecta ao banco de dados, limpa a coleção de usuários (cuidado em produção!), define um array de usuários e os insere no banco de dados. A variável de ambiente MONGODB_URI é usada para a conexão, seguindo as melhores práticas para o HostGator Plano M. O error handling garante que o script termine corretamente, informando sobre qualquer problema.

Exercício Hands-On (5 min)

Crie um script de seeding para uma coleção “Produtos” com os seguintes campos: nome, descricao e preco. Insira pelo menos três produtos diferentes.

Solução:

// seeds/products.js
// ... (similar ao script anterior)

const products = [ { nome: 'Produto A', descricao: 'Descrição do Produto A', preco: 10.99 }, { nome: 'Produto B', descricao: 'Descrição do Produto B', preco: 25.50 }, { nome: 'Produto C', descricao: 'Descrição do Produto C', preco: 50.00 }, ];

await Product.insertMany(products); // Insere os produtos

// ... (resto do script)

Para testar, execute o script node seeds/products.js e verifique se os produtos foram inseridos corretamente no seu banco de dados. Se encontrar erros, revise o código e as mensagens de erro para solucionar o problema. Como próximos passos, explore outras formas de seeding, como a utilização de bibliotecas especializadas ou a geração de dados aleatórios para testes mais robustos.

🚀 Pronto para a próxima aula?

Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!

📚 Ver todas as aulas