Introdução ao TypeORM
A comunicação de uma aplicação com um sistema de gerenciamento de banco de dados (SBGD) pode ocorrer de diferentes formas. Após a escolha do tipo de banco de dados (relacional, NoSQL, grafos) e do SGBD (MySQL, PostgreeSQL, MongoDB), deve-se utilizar um driver que se conecta ao SGBD específico. A conexão envolve parâmetros como host
, port
, username
, password
e database
.
Um dos parâmetros da conexão (database
) pode parecer redundante, mas é bastante simples de entender sua necessidade: um único SGBD pode armazenar vários bancos de dados ao mesmo tempo, cada um com uma finalidade diferente. Assim, é importante que se especifique o banco de dados exato que deverá ser acessado. Os SBGDs também possibilitam configurar diferentes políticas de segurança para usuários em diferentes bancos de dados, reforçando a importância desse parâmetro.
Note que, por enquanto, usaremos um banco de dados local, que executa no nosso próprio computador, mas podemos contratar um serviço de banco de dados na nuvem e nos conectar a ele de forma bastante simples, trocando os valores desses parâmetros.
💡 Para que serve o TypeORM?
O TypeORM é, como seu nome já indica, uma ferramenta do tipo Object–relational Mapping, ou seja: ela faz o mapeamento do paradigma Orientado a Objeto para o Modelo Relacional de Banco de Dados (e vice-versa).
➕ Adicionando o TypeORM ao nosso projeto
Para tornar o nosso projeto compatível com o TypeORM, precisamos instalar algumas dependências:
npm install typeorm reflect-metadata --save
npm install @types/node --save-dev
npm install mysql2 --save
Precisamos, no arquivo tsconfig.json
, incluir as seguintes propriedades:
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
}
Ou podemos poupar esforços e diretamente usar o seguinte comando para criar um novo projeto:
npx typeorm init --name meubancopoo --database mysql2
Criando o DataSource
Em nosso projeto, precisamos criar um arquivo que registrará o DataSource
, a nossa conexão com um sistema de gerenciamento de banco de dados.
import { DataSource } from "typeorm";
export const banco = new DataSource({
type: "mysql",
host: "localhost",
port: 3307,
username: "root",
password: "root",
database: "nomedoseubanco",
entities: ["./entity/**.ts"],
synchronize: true,
dropSchema: false,
logging: false
});