Kövesse ezt az oktatóanyagot, hogy megismerjen néhány izgalmas, kiegészítő technológiát, amelyet a következő projektjéhez használhat.

Más Node.js-keretrendszerekhez hasonlóan a Nest.js is átfogó eszközkészletet kínál robusztus és méretezhető háttérszolgáltatások létrehozásához. Mindazonáltal fontos megérteni, hogyan kell megvalósítani a létrehozást, olvasást, frissítést és törlést (CRUD) műveletek a Nest.js-ben hatékonyan – ezek a fejlesztés legalapvetőbb műveletei API-k közül.

Ismerje meg, hogyan hozhat létre Nest.js CRUD REST API-t TypeORM és PostgreSQL adatbázis használatával.

A Nest.js használatának megkezdése

A kezdéshez telepítse a Nest.js parancssori eszközt:

npm i -g @nestjs/cli

Ezután hozzon létre egy új projektet a következő futtatással:

Nest new crud-app

A CLI eszköz felkéri Önt, hogy válasszon csomagkezelőt, és válassza ki a legkedvezőbb opciót. Használjuk npm, a Node csomagkezelő.

A CLI egy alap Nest.js projektet hoz létre az alkalmazás futtatásához szükséges összes konfigurációs fájllal és kezdeti függőségekkel.

instagram viewer

Végül keresse meg a projektkönyvtárat, és indítsa el a fejlesztőkiszolgálót.

cd crud-app
npm futás indítása

A projekt kódja megtalálható benne GitHub adattár.

Hozzon létre egy PostgreSQL adatbázist

Ez az oktatóanyag felhőalapú PostgreSQL-példányt használ, de beállíthat helyette egy helyi PostgreSQL-adatbázist. tudsz telepítse a PostgreSQL-t Windows rendszeren, macOS rendszeren, vagy Linuxon.

Felhőbeli PostgreSQL-példány beállítása:

  1. Irány oda ElephantSQL, regisztráljon, és jelentkezzen be fiókja áttekintő oldalára.
  2. Kattints a Új példány létrehozása gombot az oldal bal felső részén, hogy új példányt hozzon létre az alkalmazáshoz.
  3. Írja be a példány nevét, válassza ki az ingyenes csomagot, végül válassza ki a régiót a beállítási folyamat befejezéséhez.
  4. Az adatbázispéldány létrehozása után lépjen a beállítások oldalt, és másolja ki a mellékelt adatbázis URL.

Állítsa be az adatbázis-kapcsolatot

A projekt gyökérkönyvtárában hozzon létre a .env fájlt, és illessze be az adatbázis-kapcsolat URL-jét a következőképpen:

DATABASE_URL=""

Most telepítse ezeket a csomagokat:

npm install pg typeorm @nestjs/typeorm @nestjs/config

Ezután folytassa és hozzon létre egy adatbázis-modult a CLI eszközzel.

nest g modul adatbázis

Nyissa meg a adatbázis/adatbázis.module.ts fájlt, és adja hozzá a következő adatbázis-konfigurációs kódot:

import { Modul } tól től"@nestjs/common";
import { ConfigModule, ConfigService } tól től"@nestjs/config";
import { TypeOrmModule } tól től"@nestjs/typeorm";
import { Felhasználó } tól től"../users/models/user.entity";

@Modul({
import: [
TypeOrmModule.forRootAsync({
importálás: [ConfigModule],
inject: [ConfigService],

useFactory: async (configService: ConfigService) => ({
típus: 'postgres',
url: configService.get('DATABASE_URL'),
entitások: [Felhasználó],
szinkronizálni: igaz
}),
}),
],
})

exportosztály Adatbázismodul {}

Ez az adatbázismodul úgy kezeli a kapcsolatot, hogy beállítja a TypeORM modult a szükséges kapcsolati paraméterrel, az adatbázis URL-címével.

Ezenkívül meghatározza a User entitást a konfiguráció részeként, amely meghatározza a PostgreSQL adatbázistáblában tárolt adatok szerkezetét és tulajdonságait.

Ebben a szakaszban a kód valószínűleg hibát fog kiütni, mert még nem hozta létre a felhasználók entitást. Ezt a következő lépésekben teheti meg.

Frissítse az app.module.ts fájlt

Végül frissítse a fő alkalmazásmodult, hogy tartalmazza az adatbázis-modul konfigurációját.

import { Modul } tól től"@nestjs/common";
import { ConfigModule } tól től"@nestjs/config";
import { AppController } tól től"./app.controller";
import { AppService } tól től"./app.service";
import { DatabaseModule } tól től'./database/database.module';

@Modul({
import: [
ConfigModule.forRoot({
envFilePath: ".env",
}),
Adatbázis modul,
],

vezérlők: [AppController],
szolgáltatók: [AppService],
})

exportosztály AppModule {}

Határozzon meg egy felhasználói modult

A felhasználói modul központi komponensként szolgál, amely az API CRUD funkcióinak megvalósításához szükséges logika beágyazásáért és kezeléséért felelős.

Futtassa ezt a terminálparancsot az API felhasználói moduljának létrehozásához.

Nest g modul felhasználói

A CLI eszköz automatikusan frissíti a app.module.ts fájlt, hogy tükrözze a végrehajtott változtatásokat, a felhasználói modul létrehozása mellett. Ez biztosítja, hogy az újonnan létrehozott modul, a felhasználók megfelelően integrálódjanak az alkalmazás modulkonfigurációjába.

Hozzon létre egy felhasználói entitást

A TypeORM egy objektum-relációs leképezési (ORM) könyvtár, amely leegyszerűsíti az adatbázis-interakciókat a TypeScriptet használó alkalmazásokban azáltal, hogy JavaScript-objektumokat képez le adatbázistáblázatokhoz.

A TypeORM használatával felhasználói entitás létrehozásával meghatározhatja a felhasználói adatok szerkezetét és tulajdonságait a PostgreSQL adatbázisban.

A felhasználók könyvtárában hozzon létre egy újat model/user.entity.ts és adja hozzá a következő kódot.

import { Entity, PrimaryGeneratedColumn, Column, } tól től"typeform";

@Entity()
exportosztály felhasználó {
@PrimaryGeneratedColumn()
azonosító: szám;

@Oszlop()
név: húr;

@Oszlop()
email: húr;
}

A Felhasználó entitás határozza meg az adatbázisban tárolt felhasználói adatok szerkezetét. Ebben az esetben ez a id mint az elsődleges kulcs oszlop, és a név és email oszlopok és a hozzájuk tartozó tulajdonságaik.

Hozza létre a CRUD API szolgáltatást

Most hozza létre az API-szolgáltatást, amely kezeli a CRUD műveletek logikáját az alábbi parancs futtatásával:

nest g szolgáltatás felhasználói

Nyissa meg a user-auth.service.ts fájlt, és add hozzá ezt a kódot:

import { Injekciós } tól től"@nestjs/common";
import { InjectRepository } tól től"@nestjs/typeorm";
import { Repository } tól től"typeorm";
import {Felhasználó} tól től"./models/user.entity";

@Injektálható()
exportosztály UsersService {
konstruktőr(
@InjectRepository(Felhasználó)
magán userRepository: Repository,
) {}

async Találd meg mindet(): Ígéret {
Visszatérésez.userRepository.find();
}

async findOne (azonosító: szám): Ígéret {
Visszatérésez.userRepository.findOne({ ahol: { id } });
}

async létrehozás (felhasználó: részleges): Ígéret {
const újfelhasználó = ez.userRepository.create (felhasználó);
Visszatérésez.userRepository.save (újfelhasználó);
}

async frissítés (id: szám, felhasználó: Részleges): Ígéret {
várjaez.userRepository.update (id, user);
Visszatérésez.userRepository.findOne({ ahol: { id } });
}

asynctöröl(azonosító: szám): Ígéret<üres> {
várjaez.userRepository.delete (id);
}
}

Ez a UsersService osztály különféle API-metódusokat határoz meg a CRUD műveletek kezelésére. Ezek a módszerek magukban foglalják az összes felhasználó adatának lekérését, egy adott felhasználó megtalálását az azonosítószámával, létrehozását egy új felhasználó, egy meglévő felhasználó frissítése, és egy módszer egy adott felhasználó adatainak törlésére az adatbázisban.

Határozzon meg egy vezérlőt az API-hoz

Hozzon létre egy vezérlőt, amely kezeli a felhasználókkal kapcsolatos műveletek API-végpontjait.

nest g vezérlő felhasználói

Ezután adja hozzá az alábbi kódot a users.controller.ts fájlt.

import { Controller, Get, Post, Body, Put, Param, Delete, NotFoundException, HttpCode } tól től"@nestjs/common";
import { UsersService } tól től'./users.service';
import { Felhasználó } tól től"./models/user.entity";

@Vezérlő("api/felhasználók")
exportosztály UsersController {
konstruktőr(magán readonly usersService: UsersService) {}

@Kap()
async Találd meg mindet(): Ígéret {
Visszatérésez.usersService.findAll();
}

@Post()
@HttpCode(201)
async teremt(@Test() felhasználó: Felhasználó): Ígéret {
const CreatedUser = várjaez.usersService.create (felhasználó);
Visszatérés CreatedUser;
}

@Put(':id')
async frissítés (@Param("azonosító") id: szám, @Test() felhasználó: Felhasználó): Ígéret<Bármi> {
várjaez.usersService.update (azonosító, felhasználó);
Visszatérés { üzenet: "A felhasználó sikeresen frissítve" };
}

@Töröl(':id')
asynctöröl(@Param("azonosító") id: szám): Ígéret<Bármi> {
const felhasználó = várjaez.usersService.findOne (id);

ha (!felhasználó) {
dobásúj NotFoundException('A felhasználó nem létezik!');
}

várjaez.usersService.delete (id);
Visszatérés { üzenet: "Felhasználó sikeresen törölve" };
}
}

A vezérlő kezeli a felhasználói műveletek API-végpontjait. Kezeli a GET kéréseket az összes felhasználó lekéréséhez, a POST kéréseket új felhasználók létrehozásához, a PUT kéréseket a meglévő felhasználók frissítéséhez és a DELETE kéréseket a felhasználók törléséhez.

Kihasználva a UsersService és interakcióba lép a Felhasználó entitás, ez a vezérlő teljes API-t biztosít az adatbázisban tárolt adatok felhasználóval kapcsolatos műveleteinek kezelésére.

Frissítse a users.module.ts fájlt

Végül frissítse a users.module.ts fájlt az alábbiak szerint, hogy biztosan beépítse a Felhasználói entitás és a TypeORM modult, amely létrehozza a kapcsolatot az adatbázissal.

import { Modul } tól től"@nestjs/common";
import { UsersController } tól től'./users.controller';
import { UsersService } tól től'./users.service';
import { TypeOrmModule } tól től"@nestjs/typeorm";
import { Felhasználó } tól től"./models/user.entity";

@Modul({
importál: [TypeOrmModule.forFeature([User])],
vezérlők: [UsersController],
szolgáltatók: [UsersService]
})

exportosztály UsersModule {}

Végül folytassa a fejlesztői kiszolgáló felpörgetésével, hogy tesztelje a CRUD-műveleteket a Postman segítségével.

npm futás indítása

A szerver a 3000-es porton indul, és API kéréseket küldhet neki a címen http://localhost: 3000/api/felhasználó.

Háttéralkalmazások létrehozása a Nest.js segítségével

Akár egyszerű REST API-t, akár összetett webalkalmazást fejleszt, a Nest.js funkciók és képességek átfogó készletét kínálja megbízható és robusztus háttérrendszer felépítéséhez.

A Nest.js strukturáltabb megközelítést kínál a projektfejlesztéshez, mint az Express.js. Ez biztosítja, hogy a szervezett és moduláris tervezési mintának köszönhetően magabiztosan építhet, méretezhet és karbantarthat összetett alkalmazásokat.