TypeORM - Odbiornik i rejestrowanie jednostek

Odbiornik jednostek jest używany w encjach, które obsługują metodę niestandardową i nasłuchują określonych zdarzeń. Możemy zdefiniować dowolną metodę jednostki za pomocą dekoratorów. Rozumiemy w skrócie dekoratorów.

  • @AfterLoad - Gdy jednostka jest ładowana za pomocą QueryBuilder lub repozytorium / menedżera, ta metoda zostanie wywołana.
  • @BeforeInsert - Ta metoda zostanie wywołana przed wstawieniem jednostki za pomocą repozytorium / menedżera.
  • @AfterInsert - Ta metoda zostanie wywołana po wstawieniu jednostki za pomocą repozytorium / menedżera.
  • @BeforeUpdate - Ta metoda wywoła ją, zanim istniejąca jednostka zostanie zaktualizowana za pomocą repozytorium / menedżera.
  • @AfterUpdate - Zadzwoni po zaktualizowaniu jednostki.
  • @BeforeRemove - Zadzwoni zanim jednostka zostanie usunięta.
  • @AfterRemove - Zadzwoni po usunięciu jednostki.

Abonent

Abonent służy do nasłuchiwania określonych zdarzeń encji. Jest realizowany zEntitySubscriberInterface. Rozumiemy prosty przykład, jak używać nasłuchiwania encji w subskrybencie. Rozważ, że jednostka Ucznia jest pokazana poniżej -

Student.ts

import {Entity, PrimaryGeneratedColumn, Column} from "typeorm"; 

@Entity() 
export class Student {     

   @PrimaryGeneratedColumn() 
   id: number; 
   
   @Column() 
   Name: string; 
   
   @Column() 
   age: number; 
}

Utwórz subskrybenta studenta

Abonent jest tworzony za pomocą poniższego polecenia -

typeorm subscriber:create -n StudentSubscriber

Powyższe polecenie tworzy katalog subskrybenta w src projektu. Następnie wewnątrz subskrybenta tworzony jest plik StudentSubscriber.ts. Możesz zobaczyć następującą odpowiedź,

Subscriber /Users/workspace/TypeORM/FirstProject/src/subscriber/StudentSubscriber.ts has been created successfully.

Teraz przejdź do pliku, możesz zobaczyć poniższe kodowanie -

StudentSubscriber.ts

import {EventSubscriber, EntitySubscriberInterface} from "typeorm"; 

@EventSubscriber() 
export class StudentSubscriber implements EntitySubscriberInterface<any> { 
}

Teraz dodaj następujące zmiany w pliku,

import {EventSubscriber, EntitySubscriberInterface,InsertEvent} from "typeorm"; 
import {Student} from "../entity/Student"; 

@EventSubscriber() 
export class StudentSubscriber implements EntitySubscriberInterface<any> { 
   listenTo() 
   { 
      return Student; 
   } 
   
   afterInsert(event: InsertEvent<Student>) { 
      console.log(event); 
   } 
}

Tutaj,

Użyliśmy afterInsert()metoda wywoływania zdarzenia jednostki. Podobnie możesz używać innych wydarzeń. Mamy już skonfigurowany plik ormconfig.json. Teraz dodaj poniższe zmiany windex.ts plik w następujący sposób -

index.ts

import "reflect-metadata"; import {createConnection} from "typeorm"; import {Student} from "./entity/Student"; 

createConnection().then(async connection => {

   console.log('connection established'); 
}).catch(error => console.log(error));

Po uruchomieniu aplikacji na ekranie możesz zobaczyć poniższe dane wyjściowe:

Logowanie

Rejestrowanie bazy danych jest ważną częścią projektu rozwiązania bazodanowego o wysokiej dostępności, ponieważ dzienniki bazy danych umożliwiają odzyskanie danych po awarii oraz synchronizację podstawowych i pomocniczych baz danych.

Wszystkie bazy danych mają powiązane z nimi dzienniki. Te dzienniki przechowują informacje o zmianach w bazie danych. Jeśli konieczne jest przywrócenie bazy danych do punktu wykraczającego poza ostatnią pełną kopię zapasową w trybie offline, wymagane są dzienniki, aby przywrócić dane do punktu awarii.

Opcje rejestrowania

Rejestrowanie jest włączane przez dodanie parametru {logging: true} w połączeniu z bazą danych. Opcje rejestrowania są podzielone na różne typy. Są następujące -

query- zwróć wszystkie zapytania dziennika. Jest zdefiniowany jak podano poniżej -

{ 
   host: "localhost",
   ... 
   logging: ["query"] 
}

error- zwraca dzienniki wszystkich nieudanych zapytań i błędów. Jest zdefiniowany poniżej -

{ 
   host: "localhost",
   ... 
   logging: ["error"] 
}

schema - zwraca logi dla schematu.

warn - zwrócić wewnętrzne ostrzeżenia ORM.

info - zwraca logi wewnętrzne komunikaty informacyjne ORM.

log - zwraca wewnętrzne komunikaty dziennika ORM.

Rejestrator niestandardowy

Rejestrowanie niestandardowe to prosta i wysoce konfigurowalna opcja rejestrowania. Możemy stworzyć własną klasę loggera używając poniższego kodu -

import {Logger} from "typeorm"; 

export class MyCustomLogger implements Logger { 
   
   // implement all methods from logger class 
}

Opcja połączenia jest określona w ormconfig.json w następujący sposób -

name: "mysql", 
type: "mysql", 
host: "localhost", 
port: 3306, 
username: "root", 
password: "root", 
database: "test", 
logger: new MyCustomLogger()