Git Product home page Git Product logo

orm-sequelize's Introduction

Iniciando o projeto

npm init -y

Instalação do express

npm install express

Instalação do body-parser

npm install body-parser

Executando o server

node api/index.js

Instalação do nodemon

npm install --save-dev nodemon

Rodando o server

npm run start

Instalação do MySQL

npm install mysql2

Instalações do sequelize, sequelize-cli e path

npm install sequelize sequelize-cli path

Iniciando o sequelize-cli

npx sequelize-cli init

Endereço do MySQL no XAMPP

cd c:\xampp\mysql\bin

Acessando o MySQL

mysql.exe -u root -p

Listando os databases

show databases;

Criação do database: escola_ingles

CREATE DATABASE escola_ingles;
  • ORM significa Mapeador de Objeto Relacional (em uma tradução livre) e usamos para isolar a camada relacional de dados do restante da aplicação;
  • ORMs oferecem uma interface única, que pode ser utilizada para vários bancos de dados relacionais diferentes;
  • Ajudam o time a ganhar agilidade no desenvolvimento das aplicações; e
  • Esta interface única “esconde” as especificidades dos diversos bancos relacionais, diminuindo a complexidade do código.

Criação da Modelo Pessoas

npx sequelize-cli model:create --name Pessoas --attributes nome:string,ativo:boolean,email:string,role:string

Migração em SQL

  • Migração de dados: transferência de dados entre plataformas.
  • Migração com ORM: alterações incrementais e rastreáveis no banco.

Mudanças no Esquema

  • Coordenar alterações feitas por diferentes pessoas no time nas tabelas do banco.
  • Rastrear (e reverter) alterações feitas no banco para debugar conflitos e erros.

freezeTableName: “congelar” o nome da tabela, assim o Sequelize não vai tentar pluralizar.

Rodando as migrates

npx sequelize-cli db:migrate

Utilizar o db: escola_ingles

use escola_ingles;

Listar as tabelas

show tables;

Ver colunas da tabela Pessoas

describe Pessoas;

Inserindo dados

insert into Pessoas (nome, ativo, email, role, createdAt, updatedAt) values ("Lucas", 1, "[email protected]", "estudante", NOW(), NOW());

Dados da tabela Pessoas

select * from Pessoas;

Criando um seed

npx sequelize-cli seed:generate --name demo-pessoa

Rodando o seed

npx sequelize-cli db:seed:all
  • api/index.js é o ponto de entrada da aplicação, onde iniciamos o servidor e chamamos a biblioteca Express para gerenciar as rotas da API.

  • api/models/index.js é o arquivo que gerencia todos os modelos da pasta models e é atraveś dele que o Sequelize conecta os modelos ao banco de dados de acordo com o ambiente escolhido (durante o projeto estamos trabalhando com o ambiente 'development', de desenvolvimento.

  • api/routes/index.js é o ponto de entrada que gerencia os arquivos de rotas, importa os métodos de cada arquivo api/routes/[arquivo] através dos require e chama estes métodos de acordo com a rota acessada pelo usuário.

Criando o Modelo da Tabela Niveis

npx sequelize-cli model:create --name Niveis --attributes descr_nivel:string

Criando o Modelo da Tabela Turmas

npx sequelize-cli model:create --name Turmas --attributes data_inicio:dateonly

Criando o Modelo da Tabela Matriculas

npx sequelize-cli model:create --name Matriculas --attributes status:string

Criar tabelas com o nome no Plural, e priorizar na ordem de criação, tabelas sem FK.

Seed demo-nivel

npx sequelize-cli seed:generate --name demo-nivel

Seed demo-turmas

npx sequelize-cli seed:generate --name demo-turmas

Seed demo-matriculas

npx sequelize-cli seed:generate --name demo-matriculas

Verificar versões

npm outdated

Atualizar versões

npm update

Alterando a tabela Pessoas

alter table Pessoas add colomun deletedAt datetime after updatedAt;
  • Qualquer alteração na estrutura do banco feita através de acesso direto ao banco (via terminal, por exemplo), sem o uso de uma migração, não é indexada/rastreável.

  • Migrações com ORM são úteis para coordenar alterações feitas por diferentes pessoas nas tabelas do banco.

  • Migração em SQL é a transferência de dados entre plataformas/ambientes SQL.

  • As alterações feitas no banco via migrações podem ser rastreadas e revertidas para debugar conflitos e erros.

  • Migração com ORM é o processo de documentar e rastrear mudanças em um banco de dados.

  • Validações feitas no front-end são muito úteis para melhorar a experiência de quem utiliza a aplicação, mas não substituem a validação no back-end.

  • Validações feitas no back-end devem ser levadas em conta nos custos de hospedagem em nuvem, pois é preciso fazer a requisição para então ser validada.

  • As validações feitas no front-end são mais fáceis de serem burladas por pessoas mal-intencionadas.

  • Uma vez que a API é disponibilizada para o front-end, não é possível garantir que a requisição esteja realmente sendo enviada pela aplicação, então, por segurança, ela também deve ser feita no back-end.

  • Transações servem para garantir a consistência dos dados em um banco; no fim de cada transação, todos os dados devem estar em um estado consistente.

  • O gerenciamento de transações pode ser feito pelo Sequelize através do método .transaction().

  • Uma transação é uma única operação e deve ser completada com todas as modificações de dados, ou nenhuma modificação é feita.

  • Os serviços podem herdar e se conectar entre si, independente das outras camadas. Por exemplo: ProdutoServices.js pode utilizar métodos das classes FornecedorServices.js e herdar métodos a partir de uma classe Services mais genérica.

  • A separação entre serviços e controladores ajuda a aplicação a ficar mais modular, fácil de se atualizar e dar manutenção.

  • A camada de serviços passa a ser a única com acesso aos modelos, tirando essa responsabilidade dos controladores.

  • É uma boa prática conectar um controlador somente ao seu próprio serviço. Por exemplo: ProdutoController.js apenas importar e utilizar métodos que venham de ProdutoServices.js.

  • Após a separação, a responsabilidade do serviço é se conectar aos modelos através dos métodos de query do Sequelize; já os controladores recebem as chamadas das rotas, passam para os serviços as informações necessárias e fazem os tratamentos de dados nos retornos.

orm-sequelize's People

Contributors

isacna avatar

Watchers

Kostas Georgiou avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.