TypeORM - Lavorare con il repository

Il repository è specifico di un'entità. In altre parole, ogni entità avrà il proprio repository integrato ed è possibile accedervi utilizzando il metodo getRepository () dell'oggetto connessione come specificato di seguito -

const studRepository = manager.getRepository(Student);

Una volta creato l'oggetto repository studente, può essere utilizzato per eseguire tutte le operazioni di database dell'oggetto studente.

Tipi di repository

Repositoryè classificato in quattro categorie. Sono i seguenti:

Repository

Repository predefinito di un'entità ed è possibile accedervi utilizzando getRepository() metodo come specificato di seguito -

const studRepository = manager.getRepository(Student);

Adesso, studRepository può essere utilizzato per interrogare la tabella degli studenti

TreeRepository

Utilizzato per entità struttura ad albero ed è possibile accedervi utilizzando getTreeRepository() metodo come specificato di seguito -

const studcaRepository = manager.getTreeRepository(Student);

MongoRepository

Utilizzato all'interno delle entità operative di mongoDB e vi si può accedere utilizzando getMongoRepository() metodo come specificato di seguito -

const detailsRepository = manager.getMongoRepository(Details);

CustomRepository

Utilizzato per personalizzare il repository ed è possibile accedervi utilizzando getCustomRepository() metodo come specificato di seguito,

const myUserRepository = manager.getCustomRepository(UserRepository);

API del repository

Impariamo il metodo più importante di EntityManager in questo capitolo.

manager

Possiamo accedere EntityManager utilizzando il metodo manager come specificato di seguito -

const manager = repository.manager;

queryRunner

queryRunnerrestituisce un oggetto runner di query personalizzato e viene utilizzato per le operazioni di database dal repository. Il codice di esempio è il seguente:

const queryRunner = repository.queryRunner;

metadati

metadatarestituisce i metadati del repository. Il codice di esempio è il seguente:

const metadata = repository.metadata;

query

querymetodo esegue query SQL. Query di selezione semplice come mostrato di seguito -

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

inserire

insertviene utilizzato per inserire una nuova entità o array di entità nel database. Il codice di esempio è il seguente:

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

La query sopra è equivalente a,

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

aggiornare

update viene utilizzato per aggiornare i record esistenti nel database.

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

Questa query funziona in modo simile a quella menzionata di seguito:

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

Elimina

delete il metodo eliminerà il record specificato dalla tabella,

await repository.delete(Student, 1);

Questo eliminerà lo studente con ID 1 dal studenttavolo. È equivalente a,

delete from student where id=1;

Se desideri eliminare per nome, utilizza la query seguente,

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

Questa query eliminerà tutti gli studenti con nome, Student1

** softDelete e ripristina **

Viene utilizzato per eliminare temporaneamente i dati ed è possibile ripristinare il record in base all'ID dello studente. Il codice di esempio è il seguente:

await repository.softDelete(1);

È possibile ripristinare il record dello studente utilizzando il comando seguente:

await repository.restore(1);

Un'opzione alternativa per eliminare e ripristinare è usare softRemove e recovermetodi. Il codice di esempio è il seguente:

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

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

E puoi recuperarli utilizzando il metodo di recupero come specificato di seguito,

await repository.recover(entySoftRemove);

Salva

saveviene utilizzato per salvare l'entità data nel database. L'entità Studente semplice può essere salvata come mostrato di seguito -

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

Ciò aggiungerà il nuovo record dello studente nel database.

rimuovere

removeviene utilizzato per eliminare l'entità specificata dal database. L'entità Studente semplice può essere eliminata come mostrato di seguito:

await repository.remove(stud);

contare

countrestituirà il numero di record disponibili nella tabella ed è possibile utilizzarlo per scopi di impaginazione. Il codice di esempio è il seguente:

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

trova

findviene utilizzato per scopi di ricerca. Recupera tutto il record dal database come mostrato di seguito -

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

trova uno

Simile a findmetodo, ma restituisce il primo record corrispondente. Il codice di esempio è il seguente:

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

chiaro

clearmetodo cancella tutti i dati dalla tabella. Il codice di esempio è il seguente:

await repository.clear();