Objektovo-relačný mapovač (ORM) je knižnica, ktorá implementuje techniku ​​objektovo-relačného mapovania. To vám umožní písať databázové dotazy SQL pomocou objektovo orientovanej paradigmy vášho preferovaného jazyka.

TypeORM je TypeScript ORM, ktorý veľmi uľahčuje prepojenie s rôznymi databázami. Funguje s databázami SQL, ale tiež sa dobre spája s databázami NoSQL, ako je MongoDB.

NestJS poskytuje podporu na vysokej úrovni pre TypeORM hneď po vybalení. Špeciálny balík TypeORM uľahčuje integráciu.

Krok 1: Inštalácia závislostí

Pred použitím TypeORM v aplikácii NestJS ju musíte nainštalovať s jej natívnym balíkom NestJS a preferovanou databázou SQL. SQLite je jednoduchá možnosť bez inštalácie.

Spustite nasledujúci príkaz a nainštalujte TypeORM a jeho natívny balík NestJS pomocou správca balíkov npm:

inštalácia npm @nestjs/typeorm typorm

Ak chcete nainštalovať SQLite, spustite nasledujúci príkaz:

npm Inštalácia sqlite3

Krok 2: Vytvorenie entity

Entita je súbor polí definujúcich údaje uložené v databáze. TypeORM používa súbor entity na vytvorenie tabuľky vo vašej databáze.

instagram viewer

Na vytvorenie entity postupujte podľa nasledujúcich krokov:

  1. Vytvorte súbor vo svojom aplikačnom module a pomenujte ho podľa konvencie pomenovania NestJS (.entity.ts).
  2. Do súboru entity importujte súbor Entita, Stĺpec, a PrimaryGeneratedColumn dekoratérov z typorm.
  3. V súbore entity vytvorte a exportujte triedu.
  4. Naplňte triedu hodnotami, ktoré chcete mať vo svojej databáze, napr id, názov, atď.
  5. Pridajte k svojej triede entity anotáciu pomocou nástroja na zdobenie entít. Vďaka tomu je vaša trieda rozpoznateľná pre TypeORM ako entitu.
  6. Pridajte k svojej vlastnosti ID poznámky pomocou nástroja na zdobenie primárneho generovaného stĺpca. Toto povie TypeORM, aby označil id ako primárny kľúč a automaticky ho zvýšiť.
  7. Pridajte poznámky k zostávajúcim vlastnostiam pomocou dekorátora stĺpcov. Toto ich pridá ako stĺpce do vašej databázy.

Napríklad:

// src/test/test.entity.ts
importovať { Entity, Column, PrimaryGeneratedColumn } od 'typorm';

@Entity()
exporttriedaTest{
@PrimaryGeneratedColumn()
identifikačné číslo;

@Stĺpec()
vlastnosť_1: reťazec;

@Stĺpec()
vlastnosť_2: reťazec;

@Stĺpec()
vlastnosť_3: reťazec;
}

Vyššie uvedený súbor entity vytvorí túto tabuľku vo vašej databáze:

test
id int (11) PRIMÁRNY KĽÚČ AUTO_INCREMENT
property_1 varchar (255)
property_2 varchar (255)
property_3 varchar (255)

The Dokumentácia TypeORM pokrýva subjekty podrobnejšie.

Krok 3: Pripojenie vašej aplikácie k databáze

Teraz, keď je vaša entita nastavená, budete musieť pripojiť vašu aplikáciu k databáze. Tento príklad používa SQLite.

Ak chcete pripojiť svoju aplikáciu k databáze, postupujte podľa nasledujúcich krokov:

  1. V koreňovom module vašich aplikácií (zvyčajne app.module.ts súbor), importovať TypeOrmModule od @nestjs/typeorm.
  2. V tom istom súbore importujte všetky svoje entity.
  3. V dovoz pole, zavolajte forRoot metóda na TypeOrmModule. Metóda forRoot zdieľa pripojenie k databáze cez všetky moduly vo vašej aplikácii.
  4. Odovzdajte prázdny objekt ako argument do metódy forRoot; toto bude objekt konfigurácie TypeORM.
  5. Pridať vlastnosť, typu, na konfiguračný objekt a nastavte ho na "sqlite". Vlastnosť type označuje názov databázy, ktorú používate.
  6. Pridať ďalšiu vlastnosť, databázy, na konfiguračný objekt a nastavte ho na "test.db". Vlastnosť databázy označuje preferovaný názov databázy.
  7. Pridať ďalšiu vlastnosť, subjektov, do konfiguračného objektu a nastavte ho na prázdne pole. Vyplňte prázdne pole entitami, ktoré ste predtým importovali.
  8. Pridať ďalšiu vlastnosť, synchronizovaťa nastavte ho pravda; táto vlastnosť synchronizuje vaše entity s vašou databázou a aktualizuje ju pri každom spustení kódu. Túto vlastnosť by ste mali nastaviť iba na pravda Vo vývoji. Počas výroby by ste ho mali nastaviť na falošný aby ste predišli strate údajov.
// src/app.module.ts
importovať { Modul } od '@nestjs/common';
importovať { TypeOrmModule } od '@nestjs/typeorm';
importovať { Test } od './test/test.entity';
importovať { Entity2 } od './entity/entity.entity';
importovať { TestModule } od './test/test.module';

@Modul({
dovoz: [
TypeOrmModule.forRoot({
typ: 'sqlite',
databáza: 'test.db',
subjektov: [Test, Entita2],
synchronizovať: pravda, //iba vývoj
}),
TestModule,
],
ovládače: [],
poskytovateľov: [],
})
exporttriedaAppModule{}

Krok 4: Vytvorenie úložiska

Úložisko je prístupová vrstva entity, ktorá sa používa na vytváranie dotazov (vkladanie, mazanie, ukladanie, vyhľadávanie atď.) v tabuľke vytvorenej entitou v databáze. TypeORM podporuje návrhový vzor úložiska, takže každá entita má svoje vlastné úložisko.

TypeORM automaticky vytvorí úložisko pre vašu entitu, keď budete postupovať podľa nasledujúcich krokov:

  1. V súbore modulu vašej entity importujte TypeOrmModule od @nestjs/typeorm a importujte svoju entitu.
  2. Vytvorte dovoz pole v @Modul dekoratér.
  3. V poli importov zavolajte pre funkciu metóda na TypeOrmModule.
  4. Zadajte pole ako argument do svojho a naplňte pole svojou entitou.
// src/test/test.module.ts
importovať { Modul } od '@nestjs/common';
importovať { TypeOrmModule } od '@nestjs/typeorm';
importovať { TestController } od './test.controller';
importovať { TestService } od './test.service';
importovať { Test } od './test.entity';

@Modul({
dovoz: [TypeOrmModule.forFeature([Test])],
poskytovateľov: [TestService],
ovládače: [TestController],
})

Krok 5: Vloženie vášho úložiska do jeho služby pomocou Dependency Injection

Injekcia závislosti je technika softvérového inžinierstva, ktorá je formou inverzie princípu riadenia. Presúva bremeno správy závislostí z klientskeho kódu na knižnicu alebo službu, od ktorej závisí.

Ak chcete vložiť svoje úložisko do služby, postupujte podľa nasledujúcich krokov:

  1. V súbore služby importujte Úložisko od typorm a InjectRepository dekoratér od @nestjs/typeorm. Importujte aj entitu, ktorej chcete vložiť úložisko.
  2. Vo svojej triede služieb vytvorte a konštruktér.
  3. Vyhlásiť a súkromné premenlivý, repo, ako parameter v konštruktore na jeho inicializáciu.
  4. Priraďte typ úložiska k repo s generickým typom vašej entity.
  5. Anotujte repo pomocou dekorátora InjectRepository a odovzdajte svoju entitu ako argument.
// test.service.ts
importovať { Injekčné } od '@nestjs/common';
importovať { Úložisko } od 'typorm';
importovať { InjectRepository } od '@nestjs/typeorm';
importovať { Test } od './test.entity';

@Injekčné()
exporttriedaTestService{
konštruktér(
@InjectRepository(Test)
súkromné ​​repo: úložisko<Test>,
) {}
}

Teraz, keď je nastavenie dokončené, môžete to urobiť SQL dotazy na načítanie alebo úpravu údajov.

Vytváranie SQL dotazov pomocou TypeORM

Môžete vytvoriť akýkoľvek jednoduchý dotaz SQL volaním metód úložiska TypeORM na serveri repo premenná vo vašej triede služieb. Pomocou nástroja na tvorbu dotazov TypeORM môžete tiež vytvárať zložité dotazy SQL.