Az Object-Relational Mapper (ORM) egy olyan könyvtár, amely megvalósítja az objektum-relációs leképezési technikát. Ez lehetővé teszi, hogy SQL adatbázis-lekérdezéseket írjon a preferált nyelv objektumorientált paradigmájával.

A TypeORM egy TypeScript ORM, amely nagyon egyszerűvé teszi a különféle adatbázisokkal való interfészt. Működik SQL-adatbázisokkal, de jól illeszkedik a NoSQL-adatbázisokhoz is, például a MongoDB-hez.

A NestJS magas szintű támogatást nyújt a TypeORM-hez már készen is. A dedikált TypeORM csomag viszonylag egyszerűvé teszi az integrációt.

1. lépés: Függőségek telepítése

Mielőtt a TypeORM-ot egy NestJS-alkalmazásban használná, telepítenie kell azt a natív NestJS-csomagjával és az előnyben részesített SQL-adatbázissal. Az SQLite egy egyszerű, telepítés nélküli lehetőség.

Futtassa a következő parancsot a TypeORM és natív NestJS-csomagjának telepítéséhez a használatával az npm csomagkezelőt:

npm telepítés @nestjs/typeorm typeorm

Futtassa a következő parancsot az SQLite telepítéséhez:

instagram viewer
npm telepítés sqlite3

2. lépés: Entitás létrehozása

Az entitás az adatbázisban tárolt adatokat meghatározó mezők gyűjteménye. A TypeORM az entitásfájlt használja egy tábla létrehozásához az adatbázisban.

Entitás létrehozásához kövesse az alábbi lépéseket:

  1. Hozzon létre egy fájlt az alkalmazásmodulban, és nevezze el a NestJS elnevezési konvenciója szerint (.entity.ts).
  2. Az entitásfájlban importálja a Entitás, Oszlop, és PrimaryGeneratedColumn lakberendezők től typeorm.
  3. Az entitásfájlban hozzon létre és exportáljon egy osztályt.
  4. Töltse fel az osztályt azokkal az értékekkel, amelyeket az adatbázisában szeretne, például id, névstb.
  5. Jegyezze fel entitásosztályát az Entitásdekorátorral. Ezáltal az osztály egy entitásként felismerhetővé válik a TypeORM számára.
  6. Jegyezze fel azonosító tulajdonságát a PrimaryGeneratedColumn dekorátorral. Ez arra utasítja a TypeORM-ot, hogy jelölje meg a id elsődleges kulcsként, és automatikusan növelje azt.
  7. Jegyezze fel a fennmaradó tulajdonságokat az Oszlopdekorátorral. Ez oszlopokként adja hozzá őket az adatbázishoz.

Például:

// src/test/test.entity.ts
import { Entity, Column, PrimaryGeneratedColumn } tól től 'typeorm';

@Entity()
exportosztályTeszt{
@PrimaryGeneratedColumn()
személyi igazolvány száma;

@Oszlop()
property_1: string;

@Oszlop()
property_2: string;

@Oszlop()
property_3: string;
}

A fenti entitásfájl létrehozza ezt a táblázatot az adatbázisban:

teszt
id int (11) ELSŐDLEGES KULCS AUTO_INCREMENT
property_1 varchar (255)
tulajdonság_2 varchar (255)
tulajdonság_3 varchar (255)

Az TypeORM dokumentáció részletesebben lefedi az entitásokat.

3. lépés: Az alkalmazás összekapcsolása egy adatbázissal

Most, hogy az entitás be van állítva, csatlakoztatnia kell az alkalmazást egy adatbázishoz. Ez a példa az SQLite-ot használja.

Kövesse az alábbi lépéseket az alkalmazás adatbázishoz való csatlakoztatásához:

  1. Az alkalmazások gyökérmoduljában (általában a app.module.ts fájl), importálás TypeOrmModule tól től @nestjs/typeorm.
  2. Ugyanabban a fájlban importálja az összes entitást.
  3. Ban,-ben behozatal tömb, hívja a forRoot módszer a TypeOrmModule-on. A forRoot metódus megosztja az adatbázis-kapcsolatot az alkalmazás összes modulján keresztül.
  4. Adjon át egy üres objektumot argumentumként a forRoot metódusba; ez lesz a TypeORM konfigurációs objektum.
  5. ingatlan hozzáadása, típus, a konfigurációs objektumhoz, és állítsa be "sqlite". A type tulajdonság a használt adatbázis nevét jelöli.
  6. Új ingatlan hozzáadása, adatbázis, a konfigurációs objektumhoz, és állítsa be "teszt.db". Az adatbázis tulajdonság az adatbázis előnyben részesített nevét jelöli.
  7. Új ingatlan hozzáadása, entitások, a konfigurációs objektumhoz, és állítsa be egy üres tömbbe. Töltse fel az üres tömböt a korábban importált entitásokkal.
  8. Új ingatlan hozzáadása, szinkronizálni, és állítsa be igaz; ez a tulajdonság szinkronizálja az entitásokat az adatbázissal, és minden alkalommal frissíti, amikor futtatja a kódot. Ezt a tulajdonságot csak erre kell beállítani igaz fejlesztés alatt. A gyártás során be kell állítani hamis az adatvesztés elkerülése érdekében.
// src/app.module.ts
import { Modul } tól től '@nestjs/common';
import { TypeOrmModule } tól től '@nestjs/typeorm';
import { Teszt } tól től './test/test.entity';
import { Entitás2 } tól től './entity/entity.entity';
import { TestModule } tól től './test/test.module';

@Modul({
import: [
TypeOrmModule.ForRoot({
típus: 'sqlite',
adatbázis: 'teszt.db',
entitások: [Teszt, entitás2],
szinkronizálni: igaz, //csak fejlesztés
}),
tesztmodul,
],
vezérlők: [],
szolgáltatók: [],
})
exportosztályAppModule{}

4. lépés: Adattár létrehozása

A repository egy entitás hozzáférési rétege, amellyel lekérdezéseket hajthat végre (beszúrás, törlés, mentés, keresés stb.) az entitás által az adatbázisban létrehozott táblán. A TypeORM támogatja a lerakattervezési mintát, így minden entitásnak saját lerakata van.

A TypeORM automatikusan létrehoz egy adattárat az entitás számára, ha követi az alábbi lépéseket:

  1. Az entitás modulfájljában importálja TypeOrmModule tól től @nestjs/typeorm és importálja az entitást.
  2. Hozzon létre egy behozatal tömb a @Modul lakberendező.
  3. Az importálási tömbben hívja meg a forFeature módszer a TypeOrmModule-on.
  4. Adj át egy tömböt argumentumként a sajátodba, és töltsd fel a tömböt az entitásoddal.
// src/test/test.module.ts
import { Modul } tól től '@nestjs/common';
import { TypeOrmModule } tól től '@nestjs/typeorm';
import { TestController } tól től './test.controller';
import { Tesztszolgáltatás } tól től './test.service';
import { Teszt } tól től './test.entity';

@Modul({
behozatal: [TypeOrmModule.forFeature([Teszt])],
szolgáltatók: [TestService],
vezérlők: [TestController],
})

5. lépés: Az adattár beillesztése a szolgáltatásba a Dependency Injection használatával

A függőségi befecskendezés egy szoftverfejlesztési technika, amely a vezérlés megfordításának egyik formája. Ez áthelyezi a függőségek kezelésének terhét az ügyfélkódról arra a könyvtárra vagy szolgáltatásra, amelytől függ.

Kövesse az alábbi lépéseket a tárhely szolgáltatásba való beillesztéséhez:

  1. A szolgáltatásfájlban importálja Adattár tól től typeorm és a InjectRepository lakberendező től @nestjs/typeorm. Importálja azt az entitást is, amelybe be szeretné illeszteni a lerakat.
  2. A szolgáltatási osztályban hozzon létre a konstruktőr.
  3. Nyilatkozni a magán változó, repo, paraméterként a konstruktorban az inicializáláshoz.
  4. Rendeljen hozzá egy típusú tárat a repohoz az entitás általános típusával.
  5. Annotálja a repót az InjectRepository dekorátorral, és adja át az entitást argumentumként.
// test.service.ts
import { Injekciós } tól től '@nestjs/common';
import { Repository } tól től 'typeorm';
import { InjectRepository } tól től '@nestjs/typeorm';
import { Teszt } tól től './test.entity';

@Injektálható()
exportosztályTesztszolgáltatás{
konstruktőr(
@InjectRepository(Teszt)
privát repo: Repository<Teszt>,
) {}
}

Most, hogy a beállítás befejeződött, megteheti SQL lekérdezések az adatok lekéréséhez vagy módosításához.

SQL lekérdezések készítése TypeORM segítségével

Bármilyen egyszerű SQL-lekérdezést készíthet a TypeORM repository metódusainak meghívásával a repo változó a szolgáltatási osztályán belül. A TypeORM lekérdezéskészítőjének használatával összetett SQL-lekérdezéseket is létrehozhat.