TypeORM - praca z repozytorium

Repozytorium jest specyficzne dla jednostki. Innymi słowy, każda jednostka będzie miała swoje własne, wbudowane repozytorium, do którego można uzyskać dostęp za pomocą metody getRepository () obiektu połączenia, jak określono poniżej -

const studRepository = manager.getRepository(Student);

Po utworzeniu obiektu repozytorium uczniów można go używać do wykonywania wszystkich operacji na obiekcie ucznia w bazie danych.

Typy repozytoriów

Repositoryjest podzielony na cztery kategorie. Są następujące -

Magazyn

Domyślne repozytorium jednostki, do którego można uzyskać dostęp za pomocą getRepository() metoda określona poniżej -

const studRepository = manager.getRepository(Student);

Teraz, studRepository może służyć do tworzenia zapytań w tabeli uczniów

TreeRepository

Używany dla jednostek struktury drzewiastej i można uzyskać do niego dostęp za pomocą getTreeRepository() metoda określona poniżej -

const studcaRepository = manager.getTreeRepository(Student);

MongoRepository

Używany wewnątrz jednostek operacyjnych mongoDB i można uzyskać do niego dostęp za pomocą getMongoRepository() metoda określona poniżej -

const detailsRepository = manager.getMongoRepository(Details);

CustomRepository

Służy do dostosowywania repozytorium i można uzyskać do niego dostęp za pomocą getCustomRepository() metoda określona poniżej,

const myUserRepository = manager.getCustomRepository(UserRepository);

Repozytorium API

W tym rozdziale poznajmy najważniejszą metodę EntityManagera.

menedżer

Mamy dostęp EntityManager przy użyciu metody menedżera określonej poniżej -

const manager = repository.manager;

queryRunner

queryRunnermetoda zwraca niestandardowy obiekt uruchamiający zapytanie i jest używany do operacji na bazie danych przez repozytorium. Przykładowy kod jest następujący -

const queryRunner = repository.queryRunner;

metadane

metadatazwraca metadane repozytorium. Przykładowy kod jest następujący -

const metadata = repository.metadata;

pytanie

querymetoda wykonuje zapytania SQL. Proste zapytanie wybierające, jak pokazano poniżej -

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

wstawić

insertsłuży do wstawiania nowej jednostki lub tablicy jednostek do bazy danych. Przykładowy kod jest następujący -

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

Powyższe zapytanie jest równoważne z,

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

aktualizacja

update służy do aktualizacji istniejących rekordów w bazie danych.

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

To zapytanie działa podobnie do zapytania wymienionego poniżej -

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

usunąć

delete metoda usunie określony rekord z tabeli,

await repository.delete(Student, 1);

Spowoduje to usunięcie ucznia z identyfikatorem 1 z studentstół. Jest to równoważne z

delete from student where id=1;

Jeśli chcesz usunąć według nazwy, użyj poniższego zapytania,

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

To zapytanie usunie wszystkich uczniów mających nazwisko, Student1

** soft Usuń i przywróć **

Służy do miękkiego usuwania danych i można przywrócić rekord na podstawie identyfikatora ucznia. Przykładowy kod jest następujący -

await repository.softDelete(1);

Możesz przywrócić rekord ucznia za pomocą poniższego polecenia -

await repository.restore(1);

Alternatywną opcją usuwania i przywracania jest użycie softRemove i recovermetody. Przykładowy kod jest następujący -

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

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

Możesz je odzyskać za pomocą metody odzyskiwania określonej poniżej,

await repository.recover(entySoftRemove);

zapisać

savesłuży do zapisania danej jednostki w bazie danych. Prostą jednostkę Ucznia można zapisać, jak pokazano poniżej -

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

Spowoduje to dodanie nowego rekordu ucznia do bazy danych.

usunąć

removesłuży do usunięcia danej jednostki z bazy danych. Prostą jednostkę Ucznia można usunąć, jak pokazano poniżej -

await repository.remove(stud);

liczyć

countmetoda zwróci liczbę rekordów dostępnych w tabeli i możesz jej użyć do paginacji. Przykładowy kod jest następujący -

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

odnaleźć

findMetoda służy do wyszukiwania. Pobiera cały rekord z bazy danych, jak pokazano poniżej -

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

findOne

Podobny do find, ale zwraca pierwszy dopasowany rekord. Przykładowy kod jest następujący -

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

jasny

clearusuwa wszystkie dane z tabeli. Przykładowy kod jest następujący -

await repository.clear();