0

Conexão com o banco de dados MySql utilizando NodeJs e Sequelize

Michel S
Michel S

O que é o Sequelize?

Sequelize é um ORM(Object-Relational Mapper) para NodeJs baseado em promise, utilizado para os bancos de dados: Postgres, MySQL, MariaDB, SQLite e Microsoft SQL Server. Como ORM sequelize faz mapeamento de dados relacionais (tabelas, colunas e linhas) para objetos JavaScript.

Permite criar, buscar, atualizar e remover dados do banco utilizando métodos JS, permite modificar a estrutura de tabelas, facilitando na criação, população e migração do banco de dados.


Iniciando o projeto

Primeiro vamos criar a pasta que irá guardar nosso arquivo, eu chamarei de apiSequelize. Agora abra essa pasta no VSCode, em seguida abra o terminal do VSCode e digite o comando abaixo.

npm init -y
Esse comando vai criar o arquivo package.json que contém as configurações do projeto, como por exemplo, url do repositório, versão do projeto, as dependências instaladas e etc.


Feito isso, vamos instalar as duas dependências que iremos utilizar, Sequelize e mysql2, para isso basta digitar no mesmo terminal os seguintes comandos:

npm install --save sequelize


npm install mysql2
O primeiro comando vai instalar a biblioteca do sequelize em nosso projeto. O segundo vai instalar a biblioteca do MySQL.


Agora o próximo passo é criar o arquivo e começar a codar. Crie um arquivo na pasta apiSequelize, chamarei o arquivo de app.js. Agora nesse arquivo vamos importar o modulo Sequelize que acabamos de instalar, para isso digite o seguinte comando:

const Sequelize = require('sequelize')
Esse comando importa a biblioteca do sequelize para o nosso projeto.


Conectando-se a um banco de dados

Realizado os passos acima é hora de conectar-se ao banco de dados MySQL.

(Aqui estou considerando que você já tenha instalado e configurado o MySql em seu computador.)


Para conectar-se ao banco, cria-se uma instância Sequelize, e passa os parâmetros de conexão, esse processo pode ser feito de duas formas: Passando uma única URI, ou passando parâmetros separadamente, que é o método que vou utilizar aqui.

Digite o comando abaixo em seu arquivo app.js:

const sequelize = new Sequelize('database', 'username', 'password', {
	host: 'localhost',
	dialect: 'mysql'
})
O código acima cria a conexão com o banco, onde ‘sequelize é uma instância de ‘Sequelize’, e ‘database’ recebe o nome da sua tabela no banco de dados que será utilizado, e ‘username’ o nome de usuário do banco, e ‘password’ a senha do seu banco de dados, e ‘host’, local onde encontra-se sua aplicação, e ‘dialect’ o dialeto de banco de dados a ser usado.


Meu código está assim até o momento:

const Sequelize = require('sequelize')

const sequelize = new Sequelize('meuBanco', 'micheljohn', '123456', {
	host: 'localhost',
	dialect: 'mysql'
})


Testando a conexão

Use o metodo .authenticate() para fazer autenticação e se conectar efetivamente no banco de dados.

Aqui estou utilizando o then() caso a conexão ocorra com sucesso e o catch() caso de algum erro.

sequelize
  .authenticate()
  .then(() => {
    console.log("Conectado com sucesso!")
  }).catch((error) => {
    console.log("Erro ao conectar com DB!", error)
  })
Com o código acima, ele se autentica ao bando de dados, se der certo ele vai mostrar no seu terminal a mensagem "Conectado com sucesso!" se der algum erro, mostra a mensagem "Erro ao conectar com DB!"


Algumas observações

Feito isso sua conexão com o banco de dados utilizando o sequelize está pronta.

Por padrão sequelize mantem a conexão aberta e usará a mesma conexão para todas as consultas. Caso precise fechar utilize o método sequelize.close() (é assíncrono e retorna uma promisse)

Por convenção Sequelize com ‘S’ maiúsculo refere-se a própria biblioteca e sequelize com ‘s’ minúsculo representa uma instância de Sequelize, portanto sequelize representa uma conexão com o banco de dados.


Prontinho! Se você segui os passos sua conexão com banco de dados utilizando o sequelize deve estar funcionando corretamente.


O próximo passo é criar as models, mas essa vai ficar pra uma próxima. Muito obrigado! 👋😁

0
0

Comentários (2)

0
Paulo Junior

Paulo Junior

02/05/2021 20:48

Muito bom!

1
Jefferson Cruz

Jefferson Cruz

01/05/2021 16:21

Show

None