Observação: Relate ao professor sobre qualquer erro neste documento.
Para criar o seu projeto e conseguir usar o Sequelize como ORM para se comunicar com o banco de dados, você precisará usar o pacote sequelize-cli
da seguinte forma.
- Crie um novo diretório com o nome do seu projeto e inicialize um novo projeto Node usando o comando
npm init
. - Instale os pacotes
sequelize-cli
esequelize
com o comandonpm i sequelize sequelize-cli
.
Neste momento, você terá a seguinte estrutura de diretórios:
projeto |- node_modules (pacotes instalados pelo NPM) |- package-lock.json |- package.json
- Agora você poderá rodar o comando
sequelize init
para inicializar o seu projeto. Você instalou osequelize-cli
localmente. Logo, precisará executar o seu binário (executável) para prosseguir. Os binários de pacotes Node.js ficam localizados no diretórionode_modules/.bin
. Para executar no Windows, digite no terminalnode_modules\.bin\sequelize init
e aperte Enter.
Foram criados alguns diretórios e agora você terá a seguinte árvore de diretórios:
projeto |- config |- migrations |- models |- node_modules |- seeders |- package-lock.json |- package.json
- Neste momento, você precisará configurar o acesso ao banco de dados. Usaremos o banco de dados PostgreSQL. Certifique-se de ter seguido os passos listados aqui
- Com o usuário e base de dados criados, iremos inserir as configurações no arquivo
config/config.json
. O valor inserido emusername
éipw
, conforme definido nos passos de configuração; o valor depassword
é a senha que você inseriu para o usuário e odatabase
éipw
. Descubra o IP da máquina usandoip addr
. O IP deverá ser inserido emhostname
. Finalmente, odialect
épostgres
. Por enquanto, preencha apenas as configurações do ambientedevelopment
.
Suas configurações devem ficar como as listadas a seguir:
"development": { "username": "ipw", "password": "[SUA SENHA]", "database": "ipw", "host": "[SEU IP]", "dialect": "postgres" }
- Agora é hora de testar se as configurações estão corretas e se seu projeto consegue se comunicar com o banco de dados. Antes de continuar, instale o módulo NPM do Postgres, usando
npm i pg
.
Com o comando a seguir, você criará a base de dados ipw
especificada no arquivo de configurações:
node_modules\.bin\sequelize db:create
A saída seguinte indica sucesso na operação.
Database ipw created.
Qualquer saída diferente com alguma mensagem precedida por ERROR:
indica que houve falha na criação da base de dados, exceto se a saída indicar que a base de dados já existe (Database 'ipw' already exists.
), o que indicará que você conseguiu se conectar com sucesso ao banco de dados. Esse erro aparece porque você já possivelmente já criou a base de dados no passo 4 anterior.
Com a conexão ao banco de dados configurada corretamente, é hora de criar nosso primeiro modelo. O sequelize-cli
dispõe de um script que gera o modelo no arquivo apropriado e uma migração. Migrações são evoluções no seu esquema de dados, que serão feitas automaticamente pelo Sequelize.
Iremos gerar um modelo User com os seguintes atributos: firstName:string, lastName:string e email:string. Para isso, insira o comando a seguir:
node_modules\.bin\sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string
O comando acima emite uma saída indicando que um novo modelo e uma nova migração foram criados nos diretórios models
e migrations
.
Para executar a migração e criar a(s) tabela(s) necessária(s) para armazenar o modelo criado, digite o comando:
node_modules\.bin\sequelize db:migrate
Este comando rodará o script para criar a tabela Users
, onde será armazenado cada User
.
Verifique se a tabela Users
foi criada utilizando a interface cliente do Postgres. Conectado como postgres, execute os comandos a seguir. Esse comando deve ser executado no terminal do sistema operacional instalado na sua máquina virtual.
Para abrir a interface cliente, digite psql
.
Na interface cliente, você verá o prompt de comando postgres=#
. Digite o comando em negrito:
postgres=# \connect ipw
Você estará conectado à base de dados ipw
. Liste as tabelas da base de dados com o comando:
postgres=# \dt
Você verá a saída indicando que a tabela Users
foi criada.
List of relations Schema | Name | Type | Owner --------+---------------+-------+------- public | SequelizeMeta | table | ipw public | Users | table | ipw (2 rows)
Caso tenha feito algo errado e deseje reverter essa migração, ou seja, desfazer tudo o que foi feito por ela que, no caso, é criar a tabela Users
, insira o comando a seguir. Esse comando só desfaz a migração mais recente.
Para refazer a migração, execute o comando listado em Executando a migração
node_modules\.bin\sequelize db:migrate:undo
O comando sequelize model:generate
é usado para criar os modelos e migrações.
Use a opção --name
para definir o nome do seu modelo.
Use a opção --attributes
para definir os atributos do seu modelo, no formato nome:tipo
.
Por exemplo:
node_modules\.bin\sequelize model:generate --name Image --attributes userId:integer,fileId:string,text:string