• Nenhum resultado encontrado

Sequelize. O que é? O que faz? Como se cria?

N/A
N/A
Protected

Academic year: 2021

Share "Sequelize. O que é? O que faz? Como se cria?"

Copied!
20
0
0

Texto

(1)

Sequelize

(2)

Andressa Cruz (Dessa)

Consultora de Software @ Thoughtworks Pyladies Poa <3

Mãe de Bella, a guaipeca mais linda deste mundo

Cláudia S Moura

Desenvolvedora @ DBC Company Bacharela em História da Arte

(3)

Sequelize: o que é?

ORM para Node.js

Baseado em Promise

(4)

O que faz?

ORM: Object-Relational Mapper == Mapeamento Objeto

Relacional

Abstrai o banco de dados relacional

○ Não precisa mexer no SQL;

Framework's super completos;

(5)

E como se cria?

$ npm install --save sequelize || $ yarn add sequelize

// Definindo o banco:

$ npm install --save pg pg-hstore || $ yarn add pg pg-hstore $ npm install --save mysql2 || $ yarn add mysql2

$ npm install --save sqlite3 || $ yarn add sqlite3

(6)

Adicionando no projeto

const Sequelize = require('sequelize');

const sequelize = new Sequelize('banco', 'usuário', 'senha', { host: 'localhost',

dialect: 'mysql'

});

const sequelize = new

(7)

Testando a conexão

sequelize

.authenticate() .then(() => {

console.log('Conexão estabelecida :D'); })

.catch(err => {

console.error('Errou', err); });

(8)

Iniciando pelo cli

Cria as pastas e arquivos:

config - arquivo config, com instruções de como conectar

no banco de dados

Models - todas as models do projeto

Migrations - arquivos das migrações

Seeders - arquivos de seed

$ node_modules/.bin/sequelize init Npm install --save sequelize-cli

(9)

Configurando

{ "development": { "username": "root", "password": null, "database": "database_development", "host": "127.0.0.1", "dialect": "mysql" }, "test": { "username": "root", "password": null, "database": "database_test", "host": "127.0.0.1", "dialect": "mysql" }, "production": { "username": "root", "password": null, "database": "database_test", "host": "127.0.0.1", "dialect": "mysql" } }

(10)

Sequelize: Migration

../node_modules/.bin/sequelize model:generate --name Pokemon --attributes number:integer,name:string //cria a model Pokemon

../node_modules/.bin/sequelize model:generate --name Type --attributes name:string //cria a model Type

../node_modules/.bin/sequelize db:migrate //faz a migração

(11)

Models

const Pokemon= sequelize.define('pokemon', { id: { type: Sequelize.INTEGER, primaryKey: true }, name: Sequelize.STRING, })

const Type = sequelize.define('type', { id: { type: Sequelize.INTEGER, primaryKey: true }, name: Sequelize.STRING })

(12)

Exemplos de tipos de dados

Sequelize.STRING

//VARCHAR(255)

Sequelize.TEXT

//TEXT

Sequelize.INTEGER

//INTEGER

Sequelize.FLOAT

//FLOAT

Sequelize.DOUBLE

//DOUBLE

Sequelize.BOOLEAN

//TINYINT(1)

Sequelize.DATE

// DATETIME for mysql/sqlite,

TIMESTAMP WITH TIME ZONE for postgres

(13)

Criando relacionamento

*Para relações Belongs-to-many, o parâmetro through é obrigatório. Pokemon.belongsToMany(Type, {through: 'PokemonType'});

(14)

Tipos de relacionamento

One-To-One

belongsTo

hasOne

One-To-Many

hasMany

ManyToMany

belongsToMany

(15)

Criando o pokémon

Pokemon ID: 1 Name: Bulbasaur Type_ID: 1 //grass sequelize.sync()

.then => Type.create({ name: 'grass'

})

.then => Pokemon.create({ name: 'Bulbasaur', type_id: 1 }) Type ID: 1 Name: grass

(16)

Criando o pokémon (outro jeito)

const poison = Type.build({ name: 'poison'

})

const ekans = Pokemon.build({ name: 'Ekans', type_id: 2, }) poison.save() ekans.save() Type ID: 2 Name: poison Pokemon ID: 2 Name: Ekans Type_ID: 2 //poison

(17)

Editando o pokémon

// jeito 1

poison.name = 'veneno'

poison.save() // jeito 2 ekans.update({ name: 'Cobrinha' }) Type ID: 2 Name: veneno Pokemon ID: 2 Name: Cobrinha Type_ID: 2 //veneno

(18)

Buscando todos os pokémons

Pokemon.findAll() .then(pokemons => { mostrar(pokemons) }) Pokemon ID: 2 Name: Ekans Type_ID: 2 //poison Pokemon ID: 1 Name: Bulbasaur Type_ID: 1 //grass

(19)

Excluindo o pokémon

Pokemon.destroy({ where: { id: 1 } }) Pokemon ID: 1 Name: Bulbasaur Type_ID: 1 //grass

(20)

Obrigada ;P

@aff_andressa

@ClaudiaStrm

Referências

Documentos relacionados

[r]

E-14, E-17 Jackie Writz

Como se sabe, as investigações a respeito do sistema jurídico-penal no pós-guerra distanciaram-se cada vez mais de dados prévios ontológicos e de estruturas lógico-reais, sobre

Sem desconsiderar as dificuldades próprias do nosso alunado – muitas vezes geradas sim por um sistema de ensino ainda deficitário – e a necessidade de trabalho com aspectos textuais

atualmente têm sido realizado o diagnóstico molecular a fim de analisar as alterações de DNA em genes supressores de tumor, como o BRCA1 e BRCA2 em mulheres com

Os debates abrangeram os temas Etnia e Saúde como área emergente, Política de Saúde Indígena no contexto do SUS, Perfil epidemiológico das popula- ções indígenas e sistema

Nestas condições, o by-pass abre-se caso a tem- peratura externa seja superior à temperatura do local -2ºC (Te &lt; Tr-2ºC).. • Modo Indefinido (LED

• Se várias colunas tiverem os mesmos nomes mas se os tipos de dados não forem correspondentes, a cláusula NATURAL JOIN poderá ser modificada com a cláusula USING para especificar