Postupujte podľa tohto návodu a dozviete sa o niektorých zaujímavých, doplnkových technológiách, ktoré môžete použiť pre svoj ďalší projekt.

Rovnako ako ostatné rámce Node.js, aj Nest.js poskytuje komplexnú súpravu nástrojov na vytváranie robustných a škálovateľných backendových služieb. Napriek tomu je dôležité pochopiť, ako implementovať vytváranie, čítanie, aktualizáciu a odstraňovanie (CRUD) efektívne operácie v Nest.js – to sú najzákladnejšie operácie vo vývoji API.

Zistite, ako vytvoriť Nest.js CRUD REST API pomocou TypeORM a databázy PostgreSQL.

Začíname s Nest.js

Ak chcete začať, nainštalujte nástroj príkazového riadka Nest.js:

npm i -g @nestjs/cli

Ďalej vytvorte nový projekt spustením:

hniezdiť novú crud-app

Nástroj CLI vás vyzve, aby ste si vybrali správcu balíkov, vyberte možnosť, ktorá vám najviac vyhovuje. Použijeme npm, správca balíkov Node.

CLI vytvorí základný projekt Nest.js so všetkými požadovanými konfiguračnými súbormi a počiatočnými závislosťami potrebnými na spustenie aplikácie.

instagram viewer

Nakoniec prejdite do adresára projektu a spustite vývojový server.

cd crud-app
spustenie chodu npm

Kód tohto projektu nájdete v ňom GitHub Úložisko.

Vytvorte databázu PostgreSQL

Tento tutoriál používa cloudovú inštanciu PostgreSQL, ale namiesto toho môžete nastaviť lokálnu databázu PostgreSQL. Môžeš nainštalovať PostgreSQL na Windows, v systéme macOSalebo v systéme Linux.

Ak chcete nastaviť cloudovú inštanciu PostgreSQL:

  1. Zamierte k ElephantSQL, zaregistrujte sa a prihláste sa na stránku prehľadu svojho účtu.
  2. Kliknite na Vytvoriť novú inštanciu tlačidlo v ľavej hornej časti stránky na vytvorenie novej inštancie pre vašu aplikáciu.
  3. Vyplňte názov svojej inštancie, vyberte bezplatný plán a nakoniec vyberte región, aby ste dokončili proces nastavenia.
  4. Po vytvorení inštancie databázy prejdite na nastavenie a skopírujte poskytnutú stránku URL databázy.

Nakonfigurujte pripojenie k databáze

V koreňovom adresári projektu vytvorte a .env súbor a prilepte adresu URL pripojenia k databáze takto:

DATABASE_URL=""

Teraz nainštalujte tieto balíčky:

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

Ďalej pokračujte a vytvorte databázový modul pomocou nástroja CLI.

databáza nest g modulu

Otvor database/database.module.ts súbor a pridajte nasledujúci konfiguračný kód databázy:

importovať { Modul } od'@nestjs/common';
importovať { ConfigModule, ConfigService } od'@nestjs/config';
importovať { TypeOrmModule } od'@nestjs/typeorm';
importovať { Používateľ } od'../users/models/user.entity';

@Modul({
dovoz: [
TypeOrmModule.forRootAsync({
importy: [ConfigModule],
vložiť: [ConfigService],

useFactory: async (configService: ConfigService) => ({
typu: 'postgres',
url: configService.get(„DATABASE_URL“),
entity: [Používateľ],
synchronizovať: pravda
}),
}),
],
})

exporttrieda DatabaseModul {}

Tento databázový modul obsluhuje pripojenie konfiguráciou modulu TypeORM s požadovaným parametrom pripojenia, URL databázy.

Okrem toho definuje entitu User ako súčasť konfigurácie, ktorá špecifikuje štruktúru a vlastnosti údajov uložených v tabuľke databázy PostgreSQL.

V tejto fáze váš kód pravdepodobne vyvolá chybu, pretože ste ešte nevytvorili entitu používateľov. Urobíte to v nasledujúcich krokoch.

Aktualizujte súbor app.module.ts

Nakoniec aktualizujte hlavný aplikačný modul, aby obsahoval konfiguráciu pre databázový modul.

importovať { Modul } od'@nestjs/common';
importovať { ConfigModule } od'@nestjs/config';
importovať { AppController } od'./app.controller';
importovať { AppService } od'./app.service';
importovať { DatabaseModul } od'./database/database.module';

@Modul({
dovoz: [
ConfigModule.forRoot({
envFilePath: '.env',
}),
DatabaseModule,
],

ovládače: [AppController],
poskytovatelia: [AppService],
})

exporttrieda AppModule {}

Definujte užívateľský modul

Užívateľský modul slúži ako centralizovaný komponent zodpovedný za zapuzdrenie a riadenie logiky potrebnej na implementáciu funkčnosti API CRUD.

Spustite tento príkaz terminálu na vytvorenie používateľského modulu API.

Nest užívateľov modulu g

Nástroj CLI automaticky aktualizuje app.module.ts súbor odrážať vykonané zmeny okrem vytvorenia používateľského modulu. To zaisťuje, že novovytvorený modul, používatelia, je správne integrovaný do konfigurácie modulu aplikácie.

Vytvorte entitu používateľa

TypeORM je knižnica Object-Relational Mapping (ORM), ktorá zjednodušuje interakcie s databázou v aplikáciách, ktoré používajú TypeScript, mapovaním objektov JavaScriptu do databázových tabuliek.

Vytvorením entity Používateľ pomocou TypeORM definujete štruktúru a vlastnosti údajov používateľa v databáze PostgreSQL.

V adresári užívateľov vytvorte nový models/user.entity.ts a pridajte nasledujúci kód.

importovať { Entity, PrimaryGeneratedColumn, Column, } od"typorm";

@Entity()
exporttrieda Používateľ {
@PrimaryGeneratedColumn()
id: číslo;

@Stĺpec()
názov: reťazec;

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

The Používateľ entita definuje štruktúru užívateľských údajov uložených v databáze. V tomto prípade to je id ako stĺpec primárneho kľúča a názov a e-mailom stĺpcov a ich zodpovedajúcich vlastností.

Vytvorte službu CRUD API

Teraz vytvorte službu API, ktorá bude spravovať logiku operácií CRUD spustením príkazu nižšie:

používatelia služby nest g

Otvor user-auth.service.ts súbor a pridajte tento kód:

importovať { Injekčné } od'@nestjs/common';
importovať { InjectRepository } od'@nestjs/typeorm';
importovať { Úložisko } od'typorm';
importovať {Používateľ} od'./models/user.entity';

@Injekčné()
exporttrieda UsersService {
konštruktér(
@InjectRepository(používateľ)
súkromné userRepository: Úložisko,
) {}

async findAll(): Sľub {
vrátiťtoto.userRepository.find();
}

async findOne (id: číslo): Sľub {
vrátiťtoto.userRepository.findOne({ kde: { id } });
}

async vytvoriť (používateľ: Čiastočné): Sľub {
konšt nový používateľ = toto.userRepository.create (používateľ);
vrátiťtoto.userRepository.save (nový používateľ);
}

async aktualizácia (id: číslo, užívateľ: Čiastočné): Sľub {
čakaťtoto.userRepository.update (id, používateľ);
vrátiťtoto.userRepository.findOne({ kde: { id } });
}

asyncvymazať(id: číslo): Sľub<neplatné> {
čakaťtoto.userRepository.delete (id);
}
}

Táto trieda UsersService definuje rôzne metódy API určené na spracovanie operácií CRUD. Tieto metódy zahŕňajú načítanie údajov všetkých používateľov, vyhľadanie konkrétneho používateľa pomocou jeho ID čísla, vytvorenie nový používateľ, aktualizácia existujúceho používateľa a spôsob vymazania údajov konkrétneho používateľa v databáze.

Definujte radič pre API

Vytvorte radič, ktorý bude spravovať koncové body API pre operácie súvisiace s používateľom.

používatelia nest g regulátora

Ďalej pridajte nižšie uvedený kód do users.controller.ts súbor.

importovať { Controller, Get, Post, Body, Put, Param, Delete, NotFoundException, HttpCode } od'@nestjs/common';
importovať { UsersService } od'./users.service';
importovať { Používateľ } od'./models/user.entity';

@Controller('api/users')
exporttrieda UsersController {
konštruktér(súkromné iba na čítanie usersService: UsersService) {}

@Získať()
async findAll(): Sľub {
vrátiťtoto.usersService.findAll();
}

@Príspevok()
@HttpCode(201)
async vytvoriť (@Telo() používateľ: Používateľ): Sľub {
konšt createdUser = čakaťtoto.usersService.create (používateľ);
vrátiť vytvorenýPoužívateľ;
}

@Put(':id')
async aktualizovať (@Param('id') id: číslo, @Telo() používateľ: Používateľ): Sľub<akýkoľvek> {
čakaťtoto.usersService.update (id, používateľ);
vrátiť { správa: „Používateľ bol úspešne aktualizovaný“ };
}

@Odstrániť(':id')
asyncvymazať(@Param('id') id: číslo): Sľub<akýkoľvek> {
konšt užívateľ = čakaťtoto.usersService.findOne (id);

ak (!user) {
hodiťNový NotFoundException('Používateľ neexistuje!');
}

čakaťtoto.usersService.delete (id);
vrátiť { správa: „Používateľ bol úspešne odstránený“ };
}
}

Radič spravuje koncové body API pre operácie používateľov. Spracováva požiadavky GET na získanie všetkých používateľov, požiadavky POST na vytvorenie nových používateľov, požiadavky PUT na aktualizáciu existujúcich používateľov a požiadavky DELETE na odstránenie používateľov.

Využitím UsersService a interakciu s Používateľ Tento kontrolér poskytuje kompletné rozhranie API na riadenie operácií súvisiacich s používateľmi s údajmi uloženými v databáze.

Aktualizujte súbor users.module.ts

Nakoniec aktualizujte users.module.ts súbor, ako je uvedené nižšie, aby ste sa uistili, že začleníte súbor Používateľská entita a modul TypeORM, ktorý vytvorí spojenie s databázou.

importovať { Modul } od'@nestjs/common';
importovať { UsersController } od'./users.controller';
importovať { UsersService } od'./users.service';
importovať { TypeOrmModule } od'@nestjs/typeorm';
importovať { Používateľ } od'./models/user.entity';

@Modul({
importuje: [TypeOrmModule.forFeature([User])],
ovládače: [UsersController],
poskytovatelia: [UsersService]
})

exporttrieda UsersModule {}

Nakoniec pokračujte a roztočte vývojový server, aby ste otestovali operácie CRUD pomocou Postmana.

spustenie chodu npm

Server sa spustí na porte 3000 a môžete naň odosielať požiadavky API http://localhost: 3 000/api/používateľov.

Vytváranie backendových aplikácií pomocou Nest.js

Či už vyvíjate jednoduché REST API alebo komplexnú webovú aplikáciu, Nest.js ponúka komplexnú sadu funkcií a schopností na vytvorenie spoľahlivého a robustného backendového systému.

Nest.js ponúka štruktúrovanejší prístup k vývoju projektov ako Express.js. Vďaka usporiadanému a modulárnemu vzoru dizajnu môžete s istotou vytvárať, škálovať a udržiavať zložité aplikácie.