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