Aviso
Arquitetura de Software é um tema bem teórico e de certa forma abstrato (ao menos para mim), então os tópicos abordados nesse artigo são a minha interpretação pessoal do conceito geral, sendo que essa interpretação é baseada na forma que utilizo esses conceitos em meus projetos.
Model
O que é?
É a camada do Software responsável pelo acesso, armazenamento e manipulação de qualquer informação, em qualquer tipo de entidade de armazenamento.
Essa entidade pode ser um arquivo de texto, memória, ou um banco de dados.
O que faz?
Como vimos em sua definição, a camada Model abstrai completamente os detalhes de acesso, manipulação e armazenamento, fornecendo recursos de fácil utilização para as outras camadas do Software.
Além disso, essa camada também é responsável pelo mapeamento dos dados na entidade que estamos usando para armazenamento.
"Sintaxe"
Por ser um conceito de arquitetura de Software, a camada Model não segue uma sintaxe padrão, porém há algumas regras que podemos respeitar, são elas:
Todos os recursos contidos na camada Model devem ser desacoplados do resto da aplicação.
Devemos definir e manipular nossos dados nesta camada, exportando apenas uma abstração para o resto da aplicação
Model com MySQL
O que é?
Trata-se da conexão entre a camada Model e o banco de dados MySQL. Faremos essa conexão utilizando o pacote mysql2
, para instalá-lo utilizamos o comando:
npm i mysql2
Como fazer?
Com o pacote instalado só precisamos definir a conexão utilizando o método .createPool()
, disponibilizado pelo próprio pacote. Esse método deverá receber um objeto contendo todas as informações da conexão como: host, usuário, senha e o banco de dados que iremos trabalhar.
const mysql = require('mysql2/promise');
const connection = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'myPassword123',
database: 'my_database',
});
module.exports = connection;
* OBSERVAÇÃO: Podemos criar uma conexão através do método .connect()
, porém essa conexão deverá ser gerenciada manualmente por nós.
Queries no Model
Query constante
O que é?
São Queries que não recebem parâmetros externos, ou seja, a Query sempre a mesma.
Sintaxe
Para executarmos esse tipo de Query utilizamos o método .execute()
no objeto de conexão criado com o DB, recebendo por parâmetro a Query que queremos executar em formato de string.
Uma peculiaridade do método .execute()
, é o fato dele retornar os resultados em um Array, onde os dados retornados da nossa Query ficam na primeira posição e na segunda ficam armazenados MetaDados da execução da Query.
const connection = require('./connection');
const [result] = await connection.execute('SELECT * FROM myDB');
Query dinâmica
O que é?
São Queries que recebem algum tipo de parâmetro no momento de sua execução, as deixando dinâmicas, esse parâmetro pode ser um filtro para pesquisa, colunas a serem selecionadas ou qualquer outra "personalização" que desejarmos fazer.
Sintaxe
Para interpolarmos os diferentes parâmetros à nossa Query utilizamos uma sintaxe especial do mysql2, com o método .execute()
, ela consiste na utilização de marcações, feitas através de pontos de interrogação, e definição dos parâmetros ordenadamente dentro de um Array.
Em outras palavras, colocamos pontos de interrogação onde iremos passar os parâmetros e dentro do Array passamos essas informações, sempre respeitando a ordem.
const connection = require('./connection');
const [result] = await connection.execute(
'SELECT * FROM myDB WHERE id = ?',
[2]
);
* OBSERVAÇÃO: Podemos utilizar outras formas de interpolação, como template literals ou concatenação, porém isso deixará nossa aplicação extremamente vulnerável a ataques de SQL Injection.
Top comments (0)