Object-Relational Mapper (ORM) on teek, mis rakendab objektide relatsiooni kaardistamise tehnikat. See võimaldab teil kirjutada SQL-i andmebaasipäringuid, kasutades eelistatud keele objektorienteeritud paradigmat.

TypeORM on TypeScript ORM, mis teeb erinevate andmebaasidega liidestamise väga lihtsaks. See töötab SQL-i andmebaasidega, kuid liidestub kenasti ka NoSQL-i andmebaasidega, nagu MongoDB.

NestJS pakub TypeORM-i kõrgetasemelist tuge. Spetsiaalne TypeORM-pakett muudab integreerimise suhteliselt lihtsaks.

1. samm: sõltuvuste installimine

Enne TypeORM-i kasutamist NestJS-i rakenduses peate selle installima koos oma NestJS-i paketi ja eelistatud SQL-andmebaasiga. SQLite on lihtne, installivaba valik.

Käivitage järgmine käsk, et installida TypeORM ja selle algne NestJS-pakett, kasutades npm paketihaldur:

npm installimine @nestjs/typeorm typeorm

SQLite'i installimiseks käivitage järgmine käsk:

npm installida sqlite3

2. samm: olemi loomine

Olem on väljade kogum, mis määratleb andmebaasis salvestatud andmed. TypeORM kasutab olemifaili teie andmebaasis tabeli loomiseks.

Olemi loomiseks järgige alltoodud samme.

  1. Looge oma rakenduse moodulis fail ja pange sellele NestJS-i nimetamistava järgi nimeks (.entity.ts).
  2. Importige oma olemifailis Üksus, Veergja PrimaryGeneratedColumn dekoraatorid alates tüüpvorm.
  3. Looge ja eksportige oma olemifailis klass.
  4. Täitke klass väärtustega, mida soovite oma andmebaasi lisada, näiteks id, nimi, jne.
  5. Märkige oma olemiklass üksuse dekoraatoriga. See muudab teie klassi TypeORM-ile kui olemile äratuntavaks.
  6. Märkige oma ID atribuut PrimaryGeneratedColumn dekoraatoriga. See käsib TypeORMil märgistada id esmase võtmena ja suurendage seda automaatselt.
  7. Märkige ülejäänud omadused veerudekoraatoriga. See lisab need teie andmebaasi veergudena.

Näiteks:

// src/test/test.entity.ts
importida { Entity, Column, PrimaryGeneratedColumn } alates 'tüüpvorm';

@Entity()
eksportidaklassTest{
@PrimaryGeneratedColumn()
isikukood;

@Veerg()
omadus_1: string;

@Veerg()
omadus_2: string;

@Veerg()
omadus_3: string;
}

Ülaltoodud olemifail loob teie andmebaasis selle tabeli:

test
id int (11) PRIMARY KEY AUTO_INCREMENT
omadus_1 varchar (255)
omadus_2 varchar (255)
omadus_3 varchar (255)

The TypeORM dokumentatsioon hõlmab üksusi üksikasjalikumalt.

3. samm: rakenduse ühendamine andmebaasiga

Nüüd, kui teie olem on seadistatud, peate ühendama oma rakenduse andmebaasiga. See näide kasutab SQLite'i.

Rakenduse andmebaasiga ühendamiseks järgige alltoodud juhiseid.

  1. Teie rakenduste juurmoodulis (tavaliselt app.module.ts fail), importida TypeOrmModule alates @nestjs/typeorm.
  2. Importige samas failis kõik oma olemid.
  3. Aastal import massiivi, helistage forRoot meetodit TypeOrmModule'is. ForRoot meetod jagab andmebaasiühendust kõigi teie rakenduse moodulite kaudu.
  4. Tühja objekti esitamine argumendina meetodisse forRoot; see on TypeORM-i konfiguratsiooniobjekt.
  5. Lisa kinnisvara, tüüp, konfiguratsiooniobjektile ja seadke see väärtusele "sqlite". Atribuut tüüp tähistab teie kasutatava andmebaasi nime.
  6. Lisage veel üks vara, andmebaasi, konfiguratsiooniobjektile ja seadke see väärtusele "test.db". Andmebaasi atribuut tähistab teie andmebaasi eelistatud nime.
  7. Lisage veel üks vara, üksused, konfiguratsiooniobjektile ja määrake see tühjaks massiiviks. Täitke tühi massiiv varem imporditud olemitega.
  8. Lisage veel üks vara, sünkroonidaja määrake see tõsi; see atribuut sünkroonib teie olemid teie andmebaasiga ja värskendab seda iga kord, kui koodi käivitate. Peaksite määrama ainult selle atribuudi väärtusele tõsi arenduses. Tootmise ajal peaksite selle seadistama vale andmete kadumise vältimiseks.
// src/app.module.ts
importida { Moodul } alates '@nestjs/common';
importida { TypeOrmModule } alates '@nestjs/typeorm';
importida { Test } alates './test/test.entity';
importida { Entity2 } alates './entity/entity.entity';
importida { TestModule } alates './test/test.module';

@Moodul({
import: [
TypeOrmModule.ForRoot({
tüüp: 'sqlite',
andmebaas: 'test.db',
üksused: [Test, Entity2],
sünkroonida: tõsi, //ainult arendus
}),
Testmoodul,
],
kontrollerid: [],
pakkujad: [],
})
eksportidaklassAppModule{}

4. samm: hoidla loomine

Hoidla on olemi juurdepääsukiht, mida kasutatakse päringute tegemiseks (sisestamine, kustutamine, salvestamine, otsimine jne) olemi loodud tabelis andmebaasis. TypeORM toetab hoidla kujundamise mustrit, seega on igal olemil oma hoidla.

TypeORM loob teie olemi jaoks automaatselt hoidla, kui järgite alltoodud samme.

  1. Importige oma olemi moodulifailis TypeOrmModule alates @nestjs/typeorm ja importige oma olem.
  2. Loo an import massiivi @Moodul dekoraator.
  3. Impordimassiivis helistage funktsiooni jaoks meetodit TypeOrmModule'is.
  4. Edastage massiiv oma argumendina ja sisestage massiiv oma olemiga.
// src/test/test.module.ts
importida { Moodul } alates '@nestjs/common';
importida { TypeOrmModule } alates '@nestjs/typeorm';
importida { TestController } alates './test.controller';
importida { TestService } alates './test.service';
importida { Test } alates './test.entity';

@Moodul({
import: [TypeOrmModule.forFeature([Test])],
pakkujad: [TestService],
kontrollerid: [TestController],
})

5. samm: hoidla oma teenusesse sisestamine sõltuvuse süstimise abil

Sõltuvussüst on tarkvaratehniline tehnika, mis on kontrolli inversiooni põhimõtte vorm. See nihutab sõltuvuse haldamise koormuse kliendikoodilt raamatukogule või teenusele, millest see sõltub.

Hoidla teenusesse sisestamiseks järgige alltoodud samme.

  1. Importige oma teenusefailis Hoidla alates tüüpvorm ja InjectRepository dekoraator alates @nestjs/typeorm. Importige ka olem, mille hoidla soovite sisestada.
  2. Looge oma teenindusklassis a konstruktor.
  3. Kuulutada a privaatne muutuv, repo, parameetrina konstruktoris selle lähtestamiseks.
  4. Määrake repositooriumi tüüp oma olemi üldise tüübiga.
  5. Tehke repo märkused InjectRepository dekoraatoriga ja edastage oma olem argumendina.
// test.service.ts
importida { Süstitav } alates '@nestjs/common';
importida { Hoidla } alates 'tüüpvorm';
importida { InjectRepository } alates '@nestjs/typeorm';
importida { Test } alates './test.entity';

@Süstitav()
eksportidaklassTestteenus{
konstruktor(
@InjectRepository(Test)
privaatne repo: hoidla<Test>,
) {}
}

Nüüd, kui seadistus on lõpetatud, saate seda teha SQL päringud sellel andmete toomiseks või muutmiseks.

SQL päringute tegemine TypeORM-iga

Saate teha mis tahes lihtsa SQL-päringu, kutsudes välja TypeORM-i hoidla meetodid repo muutuv teie teenindusklassis. TypeORM-i päringukoostaja abil saate luua ka keerulisi SQL-päringuid.