TypeORM - Trabalhando com Repositório

O repositório é específico para uma entidade. Em outras palavras, cada entidade terá seu próprio repositório integrado e pode ser acessada usando o método getRepository () do objeto de conexão conforme especificado abaixo -

const studRepository = manager.getRepository(Student);

Depois que o objeto de repositório do aluno é criado, ele pode ser usado para fazer todas as operações do banco de dados do objeto do aluno.

Tipos de repositório

Repositoryé classificado em quatro categorias. Eles são os seguintes -

Repositório

Repositório padrão de uma entidade e pode ser acessado usando getRepository() método conforme especificado abaixo -

const studRepository = manager.getRepository(Student);

Agora, studRepository pode ser usado para consultar a tabela do aluno

TreeRepository

Usado para entidades de estrutura tipo árvore e pode ser acessado usando getTreeRepository() método conforme especificado abaixo -

const studcaRepository = manager.getTreeRepository(Student);

MongoRepository

Usado dentro de entidades de operação mongoDB e pode ser acessado usando getMongoRepository() método conforme especificado abaixo -

const detailsRepository = manager.getMongoRepository(Details);

CustomRepository

Usado para personalizar o repositório e pode ser acessado usando getCustomRepository() método conforme especificado abaixo,

const myUserRepository = manager.getCustomRepository(UserRepository);

API de repositório

Vamos aprender o método mais importante do EntityManager neste capítulo.

Gerente

Podemos acessar EntityManager usando o método de gerenciamento conforme especificado abaixo -

const manager = repository.manager;

queryRunner

queryRunnerO método retorna o objeto executor de consulta personalizado e é usado para operações de banco de dados por repositório. O código de amostra é o seguinte -

const queryRunner = repository.queryRunner;

metadados

metadataretorna os metadados do repositório. O código de amostra é o seguinte -

const metadata = repository.metadata;

inquerir

querymétodo executa consultas SQL. Consulta de seleção simples, conforme mostrado abaixo -

const qur = await repository.query(`select * from students`);

inserir

insertmétodo é usado para inserir uma nova entidade ou matriz de entidades no banco de dados. O código de amostra é o seguinte -

await repository.insert({ 
   Name: "Student3", 
   Age: 14 
});

A consulta acima é equivalente a,

insert into student(Name,age) values("Student3",14)

atualizar

update é usado para atualizar os registros existentes no banco de dados.

await repository.update(1, { Name: "Adam" });

Esta consulta funciona de forma semelhante à mencionada abaixo -

update student SET Name = "Adam" where id = 1

excluir

delete método excluirá o registro especificado da tabela,

await repository.delete(Student, 1);

Isso excluirá o aluno com id 1 de studentmesa. É equivalente a,

delete from student where id=1;

Se você deseja excluir por nome, use a consulta abaixo,

await repository.delete({ Name: "Student1" });

Esta consulta excluirá todos os alunos com nome, Student1

** SoftDelete and restore **

Ele é usado para excluir os dados de forma reversível e você pode restaurar o registro com base na id do aluno. O código de amostra é o seguinte -

await repository.softDelete(1);

Você pode restaurar o registro do aluno usando o comando abaixo -

await repository.restore(1);

Uma opção alternativa para excluir e restaurar é usar softRemove e recovermétodos. O código de amostra é o seguinte -

//find the entities const enty = await repository.find(); 

//soft removed entity const entySoftRemove = await repository.softRemove(enty);

E você pode recuperá-los usando o método de recuperação, conforme especificado abaixo,

await repository.recover(entySoftRemove);

Salve 

saveé usado para salvar a entidade fornecida no banco de dados. A entidade simples do aluno pode ser salva conforme mostrado abaixo -

import {Student} from "./entity/Student"; 

createConnection().then(async connection => {                     
   console.log("Inserting a new record into the student database..."); 
   const stud = new Student();
   stud.Name = "student1"; 
   stud.age = 12; 
   await repository.save(stud);

Isso adicionará um novo registro do aluno ao banco de dados.

retirar

removeé usado para excluir a entidade fornecida do banco de dados. A entidade simples do aluno pode ser excluída conforme mostrado abaixo -

await repository.remove(stud);

contagem

countmétodo irá retornar o número de registros disponíveis na tabela e você pode usá-lo para fins de paginação. O código de amostra é o seguinte -

const cnt = await repository.count(Student, { age: 12 });

encontrar

findmétodo é usado para fins de pesquisa. Ele busca todos os registros do banco de dados como mostrado abaixo -

const result = await repository.find({ id: 1 });

findOne

Igual a findmétodo, mas retorna o primeiro registro correspondente. O código de amostra é o seguinte -

const result = await repository.findOne({ id: 1 });

Claro

clearmétodo limpa todos os dados da tabela. O código de amostra é o seguinte -

await repository.clear();