Cursos / Informática para Internet / Plataformas de aplicações Web / Aula
Para configurar o knex.js, primeiramente crie um arquivo no projeto chamado knexfile.js com o seguinte conteúdo:
module.exports = {
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'seu_usuario',
password : 'sua_senha',
database : 'pettopstore'
}
};
É importante trocar o valor de user e password para o seu usuário e senha do banco de dados.
Agora vamos testar nossa configuração criando tabelas do nosso banco de dados utilizando um recurso chamado "migrations" do knex.js.
Migrations são arquivos Javascript que são criados por uma ferramenta de linha de comando do knex chamada 'knex cli" e tem por objetivo organizar de forma sequencial as alterações no esquema do seu banco de dados, como por exemplo a criação de tabelas, alteração de colunas, remoção de colunas, etc.
Para mais informações sobre migrations acesse: https://knexjs.org/#Migrations
Para criar uma migration digite o seguinte comando:
npx knex migrate:make create_employees
Esse comando irá criar uma migração chamada "create_employees". Repare que esse nome foi passado por nós, e poderia ser qualquer nome, mas escolhemos um nome que representa o que essa migração realmente fará (criar a tabela de employees). O comando criar um arquivo Javascript na pasta "migrations" dentro da aplicação com o nome TIMESTAMP_create_employees.js (esse TIMESTAMP) é um número que representa a data/hora atual e faz parte do nome do arquivo, por exemplo: migrations/20210820011759_create_employees.js
O arquivo de migração é um conjunto de duas funções, uma chamada "up" e uma chamada "down" que vem vazias e você deve preencher com os comandos que desejar, como visto abaixo:
A função "up" será executada quando a migração for executada e ela deverá nesse caso ter os comandos do knex necessários para criar a tabela "employees".
A função "down" deve ter os comandos opostos aos da função "up", ou seja, no nosso caso ela deve implementar um código que remove a tabela "employees".
Migrations podem ser executadas para cima "up" ou para baixo "down" o que aplica/desfaz mudanças no banco de dados, por isso a necessidade de duas funções que você deve implementar.
Implementando as funções up e down temos o seguinte conteúdo para nosso arquivo de migration:
exports.up = function(knex) {
return knex.schema.createTable('employees', function (table) {
table.increments('id');
table.string('email');
table.string('password');
table.string('name');
table.boolean('is_admin');
})
};
exports.down = function(knex) {
return knex.schema.dropTable('employees');
};
Repare que para a função "up" usamos o comando knex.schema.createTable que recebe o nome da tabela que desejamos criar e uma função recebendo uma variábel chamada table. Nessa variável table podemos adicionar campos com os métodos table.increments('id') para criar um campo chamado 'id' inteiro o autoincremental, o método table.string que recebe o nome do campo de texto que queremos criar e o método table.boolean que recebe o nome do campo boleano que estamos criando.
Existem outros métodos para manipulação do esquema do banco de dados que podem ser conferidos na documentação do knex.
No método "down" simplesmente removemos a tabela criada com o comando "return knex.schema.dropTable('employees')".
Você agora somente criou os comandos da migration. Falta executar. Para isso execute o comando no terminal:
npx knex migrate:up
Isso fará com que o método "up" da próxima migração ainda não executada seja rodado. Como no nosso caso só temos uma, ela será a executada. Repare que se você rodar esse comando mais de uma vez, a migração não executará novamente pois o knex guarda a informação de que migrações já rodaram:
Se tudo deu certo, a tabela "employees" foi criada no banco de dados. Verifique utilizando a ferramenta que desejar:
Repare que, usando o cliente do mysql no linux, usamos os comandos "use pettopstore" para usar o banco correto, o comando "show tables" para mostrar as tabelas do banco (realmente a tabela employees está nessa lista) e por último o comando "desc employees" para exibir quais campos foram criados, confirmando que está tudo ok. Esses são comandos padrão do MySQL para verificar os campos das tabelas no banco.
Note que além da tabela "employees" existem duas outras ("knex_migrations" e "knex_migrations_lock"). Essas tabelas são de uso interno do knex para que ela consiga controlar que migrations já foram executadas ou não no banco de dados. Não remova essas tabelas.
Pronto, você criou e executou uma migration que foi responsável pela criação da tabela employees no nosso banco de dados. O knex.js foi responsável por criar o comando "CREATE TABLE" para você que especificou que campos criar na migrations.
O uso de migrations é uma prática muito útil, principalmente quando temos equipes trabalhando no mesmo projeto ou projetos com diversas implantações em diferentes servidores e bancos de dados, fazendo com que exista um controle automatizado do que falta em cada banco quando o sistema vai evoluindo.
Versão 5.3 - Todos os Direitos reservados