Postupujte podle tohoto návodu a dozvíte se o některých vzrušujících, doplňkových technologiích, které můžete použít pro svůj další projekt.
Stejně jako ostatní frameworky Node.js poskytuje Nest.js komplexní sadu nástrojů pro vytváření robustních a škálovatelných backendových služeb. Nicméně je důležité pochopit, jak implementovat vytváření, čtení, aktualizaci a mazání (CRUD) operace v Nest.js efektivně – to jsou nejzákladnější operace ve vývoji rozhraní API.
Přečtěte si, jak vytvořit Nest.js CRUD REST API pomocí TypeORM a databáze PostgreSQL.
Začínáme s Nest.js
Chcete-li začít, nainstalujte nástroj příkazového řádku Nest.js:
npm i -g @nestjs/cli
Dále vytvořte nový projekt spuštěním:
hnízdo nové crud-app
Nástroj CLI vás vyzve, abyste si vybrali správce balíčků, vyberte možnost, která vám nejvíce vyhovuje. Využijeme npm, správce balíčků Node.
CLI vytvoří základní projekt Nest.js se všemi požadovanými konfiguračními soubory a počátečními závislostmi potřebnými ke spuštění aplikace.
Nakonec přejděte do adresáře projektu a spusťte vývojový server.
cd crud-app
npm spuštění běhu
Kód tohoto projektu najdete v něm GitHub úložiště.
Vytvořte databázi PostgreSQL
Tento výukový program používá cloudovou instanci PostgreSQL, ale místo toho můžete nastavit místní databázi PostgreSQL. Můžeš nainstalovat PostgreSQL na Windows, na macOSnebo na Linuxu.
Postup nastavení cloudové instance PostgreSQL:
- Zamiřte k ElephantSQL, zaregistrujte se a přihlaste se na stránku přehledu svého účtu.
- Klikněte na Vytvořit novou instanci tlačítko v levé horní části stránky pro vytvoření nové instance pro vaši aplikaci.
- Vyplňte název své instance, vyberte bezplatný plán a nakonec vyberte region, abyste dokončili proces nastavení.
- Po vytvoření instance databáze přejděte na nastavení stránku a zkopírujte poskytnutou URL databáze.
Nakonfigurujte připojení k databázi
V kořenovém adresáři projektu vytvořte a .env soubor a vložte adresu URL připojení k databázi následovně:
DATABASE_URL=""
Nyní nainstalujte tyto balíčky:
npm install pg typeorm @nestjs/typeorm @nestjs/config
Dále pokračujte a vytvořte databázový modul pomocí nástroje CLI.
databáze nest g modulu
Otevři databáze/databáze.modul.ts soubor a přidejte následující konfigurační kód databáze:
import { Modul } z'@nestjs/common';
import { ConfigModule, ConfigService } z'@nestjs/config';
import { TypeOrmModule } z'@nestjs/typeorm';
import { Uživatel } z'../users/models/user.entity';@Modul({
dovoz: [
TypeOrmModule.forRootAsync({
importy: [ConfigModule],
vložit: [ConfigService],useFactory: asynchronní (configService: ConfigService) => ({
typ: 'postgres',
url: configService.get('DATABASE_URL'),
entity: [Uživatel],
synchronizovat: skutečný
}),
}),
],
})
vývoznítřída DatabaseModul {}
Tento databázový modul zpracovává připojení konfigurací modulu TypeORM s požadovaným parametrem připojení, URL databáze.
Navíc definuje entitu User jako součást konfigurace, která specifikuje strukturu a vlastnosti dat uložených v tabulce databáze PostgreSQL.
V této fázi váš kód pravděpodobně vyvolá chybu, protože jste ještě nevytvořili entitu uživatele. Uděláte to v následujících krocích.
Aktualizujte soubor app.module.ts
Nakonec aktualizujte hlavní aplikační modul tak, aby zahrnoval konfiguraci databázového modulu.
import { Modul } z'@nestjs/common';
import { ConfigModule } z'@nestjs/config';
import { AppController } z'./app.controller';
import { AppService } z'./app.service';
import { DatabaseModul } z'./database/database.module';@Modul({
dovoz: [
ConfigModule.forRoot({
envFilePath: '.env',
}),
DatabaseModul,
],ovladače: [AppController],
poskytovatelé: [AppService],
})
vývoznítřída AppModule {}
Definujte uživatelský modul
Uživatelský modul slouží jako centralizovaná komponenta, která je zodpovědná za zapouzdření a správu logiky potřebné k implementaci funkce CRUD API.
Spuštěním tohoto příkazu terminálu vytvořte uživatelský modul rozhraní API.
uživatelé nest g modulu
Nástroj CLI automaticky aktualizuje app.module.ts soubor odrážet provedené změny, kromě vytvoření uživatelského modulu. To zajišťuje, že nově vytvořený modul, uživatelé, je správně integrován do konfigurace modulu aplikace.
Vytvořte entitu uživatele
TypeORM je knihovna Object-Relational Mapping (ORM), která zjednodušuje databázové interakce v aplikacích používajících TypeScript mapováním objektů JavaScriptu na databázové tabulky.
Vytvořením entity User pomocí TypeORM definujete strukturu a vlastnosti uživatelských dat v databázi PostgreSQL.
V adresáři uživatelů vytvořte nový models/user.entity.ts a přidejte následující kód.
import { Entity, PrimaryGeneratedColumn, Column, } z"typorm";
@Entity()
vývoznítřída uživatel {
@PrimaryGeneratedColumn()
id: číslo;@Sloupec()
název: tětiva;
@Sloupec()
e-mailem: tětiva;
}
The Uživatel entita definuje strukturu uživatelských dat uložených v databázi. V tomto případě to je id jako sloupec primárního klíče a název a e-mailem sloupců a jejich odpovídajících vlastností.
Vytvořte službu CRUD API
Nyní vytvořte službu API, která bude spravovat logiku operací CRUD spuštěním příkazu níže:
uživatelé služby nest g
Otevři user-auth.service.ts soubor a přidejte tento kód:
import { Injekční } z'@nestjs/common';
import { InjectRepository } z'@nestjs/typeorm';
import { Úložiště } z'typorm';
import {Uživatel} z'./models/user.entity';@Injekční()
vývoznítřída UsersService {
konstruktér(
@InjectRepository(Uživatel)
soukromé userRepository: Úložiště,
) {}asynchronní najít vše(): Slib
{
vrátit setento.userRepository.find();
}asynchronní findOne (id: číslo): Slib
{
vrátit setento.userRepository.findOne({ kde: { id } });
}asynchronní vytvořit (uživatel: Částečné
): Slib {
konst nový uživatel = tento.userRepository.create (uživatel);
vrátit setento.userRepository.save (nový uživatel);
}asynchronní aktualizace (id: číslo, uživatel: Částečné
): Slib {
čekattento.userRepository.update (id, uživatel);
vrátit setento.userRepository.findOne({ kde: { id } });
}
asynchronnívymazat(id: číslo): Slib<prázdnota> {
čekattento.userRepository.delete (id);
}
}
Tato třída UsersService definuje různé metody API vyhrazené pro zpracování operací CRUD. Tyto metody zahrnují načtení dat všech uživatelů, vyhledání konkrétního uživatele pomocí jeho ID čísla, vytvoření nový uživatel, aktualizace stávajícího uživatele a způsob smazání dat konkrétního uživatele v databázi.
Definujte řadič pro API
Vytvořte řadič, který bude spravovat koncové body API pro operace související s uživatelem.
nest g controller uživatelé
Dále přidejte níže uvedený kód do users.controller.ts soubor.
import { Controller, Get, Post, Body, Put, Param, Delete, NotFoundException, HttpCode } z'@nestjs/common';
import { UsersService } z'./users.service';
import { Uživatel } z'./models/user.entity';@Ovladač('api/users')
vývoznítřída UsersController {
konstruktér(soukromé pouze pro čtení usersService: UsersService) {}@Dostat()
asynchronní najít vše(): Slib{
vrátit setento.usersService.findAll();
}@Pošta()
@HttpCode(201)
asynchronní vytvořit(@Tělo() uživatel: Uživatel): Slib{
konst createdUser = čekattento.usersService.create (uživatel);
vrátit se createdUser;
}@Dát(':id')
asynchronní Aktualizace (@Param('id') id: číslo, @Tělo() uživatel: Uživatel): Slib<žádný> {
čekattento.usersService.update (id, uživatel);
vrátit se { zpráva: 'Uživatel byl úspěšně aktualizován' };
}@Vymazat(':id')
asynchronnívymazat(@Param('id') id: číslo): Slib<žádný> {
konst uživatel = čekattento.usersService.findOne (id);-li (!user) {
házetNový NotFoundException('Uživatel neexistuje!');
}
čekattento.usersService.delete (id);
vrátit se { zpráva: 'Uživatel byl úspěšně smazán' };
}
}
Řadič spravuje koncové body API pro uživatelské operace. Zpracovává požadavky GET na načtení všech uživatelů, požadavky POST na vytvoření nových uživatelů, požadavky PUT na aktualizaci stávajících uživatelů a požadavky DELETE na odstranění uživatelů.
Pomocí UsersService a interakce s Uživatel Tento kontrolér poskytuje kompletní API pro správu uživatelských operací s daty uloženými v databázi.
Aktualizujte soubor users.module.ts
Nakonec aktualizujte users.module.ts soubor, jak je znázorněno níže, abyste zajistili, že začleníte soubor Uživatelská entita a modul TypeORM, který naváže spojení s databází.
import { Modul } z'@nestjs/common';
import { UsersController } z'./users.controller';
import { UsersService } z'./users.service';
import { TypeOrmModule } z'@nestjs/typeorm';
import { Uživatel } z'./models/user.entity';@Modul({
importuje: [TypeOrmModule.forFeature([User])],
ovladače: [UsersController],
poskytovatelé: [UsersService]
})
vývoznítřída UsersModule {}
Nakonec pokračujte a roztočte vývojový server, abyste otestovali operace CRUD pomocí Postmana.
npm spuštění běhu
Server se spustí na portu 3000 a můžete na něj posílat požadavky API na http://localhost: 3000/api/uživatelé.
Vytváření backendových aplikací pomocí Nest.js
Ať už vyvíjíte jednoduché REST API nebo složitou webovou aplikaci, Nest.js nabízí komplexní sadu funkcí a schopností pro vytvoření spolehlivého a robustního backendového systému.
Nest.js nabízí strukturovanější přístup k vývoji projektů než Express.js. To zajišťuje, že můžete s jistotou vytvářet, škálovat a udržovat složité aplikace díky svému organizovanému a modulárnímu vzoru návrhu.