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