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 sqlite3 --save
Precisamos, no arquivo tsconfig.json
, incluir as seguintes propriedades:
{
"compilerOptions": {
"target": "ES2020",
"module": "CommonJS",
"outDir": "dist",
"strict": true,
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
Ou podemos poupar esforços e diretamente usar o seguinte comando para criar um novo projeto:
npx typeorm init --name meubancopoo --database sqlite3
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 "reflect-metadata";
import { DataSource } from "typeorm";
export const banco = new DataSource({
type: "sqlite",
database: __dirname + "/banco.sqlite",
synchronize: true,
logging: false,
entities: [__dirname + "/entity/*.ts"],
});