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
});