Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
March 24, 2022 09:41 pm GMT

Model - Uma breve introduo

Aviso

Arquitetura de Software um tema bem terico e de certa forma abstrato (ao menos para mim), ento os tpicos abordados nesse artigo so a minha interpretao pessoal do conceito geral, sendo que essa interpretao baseada na forma que utilizo esses conceitos em meus projetos.

Model

O que ?

a camada do Software responsvel pelo acesso, armazenamento e manipulao de qualquer informao, em qualquer tipo de entidade de armazenamento.

Essa entidade pode ser um arquivo de texto, memria, ou um banco de dados.

O que faz?

Como vimos em sua definio, a camada Model abstrai completamente os detalhes de acesso, manipulao e armazenamento, fornecendo recursos de fcil utilizao para as outras camadas do Software.

Alm disso, essa camada tambm responsvel pelo mapeamento dos dados na entidade que estamos usando para armazenamento.

"Sintaxe"

Por ser um conceito de arquitetura de Software, a camada Model no segue uma sintaxe padro, porm h algumas regras que podemos respeitar, so elas:

  1. Todos os recursos contidos na camada Model devem ser desacoplados do resto da aplicao.

  2. Devemos definir e manipular nossos dados nesta camada, exportando apenas uma abstrao para o resto da aplicao

Model com MySQL

O que ?

Trata-se da conexo entre a camada Model e o banco de dados MySQL. Faremos essa conexo utilizando o pacote mysql2, para instal-lo utilizamos o comando:

npm i mysql2

Como fazer?

Com o pacote instalado s precisamos definir a conexo utilizando o mtodo .createPool(), disponibilizado pelo prprio pacote. Esse mtodo dever receber um objeto contendo todas as informaes da conexo como: host, usurio, 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;

* OBSERVAO: Podemos criar uma conexo atravs do mtodo .connect(), porm essa conexo dever ser gerenciada manualmente por ns.

Queries no Model

Query constante

O que ?

So Queries que no recebem parmetros externos, ou seja, a Query sempre a mesma.

Sintaxe

Para executarmos esse tipo de Query utilizamos o mtodo .execute() no objeto de conexo criado com o DB, recebendo por parmetro a Query que queremos executar em formato de string.

Uma peculiaridade do mtodo .execute(), o fato dele retornar os resultados em um Array, onde os dados retornados da nossa Query ficam na primeira posio e na segunda ficam armazenados MetaDados da execuo da Query.

const connection = require('./connection');const [result] = await connection.execute('SELECT * FROM myDB');

Query dinmica

O que ?

So Queries que recebem algum tipo de parmetro no momento de sua execuo, as deixando dinmicas, esse parmetro pode ser um filtro para pesquisa, colunas a serem selecionadas ou qualquer outra "personalizao" que desejarmos fazer.

Sintaxe

Para interpolarmos os diferentes parmetros nossa Query utilizamos uma sintaxe especial do mysql2, com o mtodo .execute(), ela consiste na utilizao de marcaes, feitas atravs de pontos de interrogao, e definio dos parmetros ordenadamente dentro de um Array.

Em outras palavras, colocamos pontos de interrogao onde iremos passar os parmetros e dentro do Array passamos essas informaes, sempre respeitando a ordem.

const connection = require('./connection');const [result] = await connection.execute(  'SELECT * FROM myDB WHERE id = ?',  [2]);

* OBSERVAO: Podemos utilizar outras formas de interpolao, como template literals ou concatenao, porm isso deixar nossa aplicao extremamente vulnervel a ataques de SQL Injection.


Original Link: https://dev.to/gabrielhsilvestre/model-uma-breve-introducao-4gch

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To