Slijedite ovaj vodič kako biste saznali više o nekim uzbudljivim, komplementarnim tehnologijama koje možete koristiti za svoj sljedeći projekt.

Kao i drugi okviri Node.js, Nest.js pruža sveobuhvatan skup alata za izgradnju robusnih i skalabilnih pozadinskih usluga. Unatoč tome, važno je razumjeti kako implementirati stvaranje, čitanje, ažuriranje i brisanje (CRUD) operacije u Nest.js učinkovito—to su najosnovnije operacije u razvoju API-ja.

Naučite kako izgraditi Nest.js CRUD REST API koristeći TypeORM i PostgreSQL bazu podataka.

Početak rada s Nest.js

Za početak instalirajte alat naredbenog retka Nest.js:

npm i -g @nestjs/cli

Zatim izradite novi projekt pokretanjem:

ugnijezditi novu crud-aplikaciju

CLI alat će vas pitati da odaberete upravitelja paketima, odaberite opciju koja vam se najviše sviđa. Koristit ćemo se npm, upravitelj paketa Node.

CLI će postaviti osnovni Nest.js projekt sa svim potrebnim konfiguracijskim datotekama i početnim ovisnostima potrebnim za pokretanje aplikacije.

Na kraju, idite do direktorija projekta i pokrenite razvojni poslužitelj.

instagram viewer
cd crud-aplikacija
npm pokrenuti početak

Kôd ovog projekta možete pronaći u GitHub spremište.

Stvorite PostgreSQL bazu podataka

Ovaj vodič koristi instancu Cloud PostgreSQL, ali umjesto toga možete postaviti lokalnu PostgreSQL bazu podataka. Možeš instalirajte PostgreSQL na Windows, na macOS-u, ili na Linuxu.

Za postavljanje Cloud PostgreSQL instance:

  1. Prijeđite na ElephantSQL, prijavite se i prijavite na stranicu pregleda svog računa.
  2. Kliknite na Stvori novu instancu u gornjem lijevom dijelu stranice za stvaranje nove instance za vašu aplikaciju.
  3. Unesite naziv svoje instance, odaberite besplatni plan i na kraju odaberite regiju da biste dovršili postupak postavljanja.
  4. Nakon stvaranja instance baze podataka, idite na postavke stranicu i kopirajte dostavljeno URL baze podataka.

Konfigurirajte vezu s bazom podataka

U korijenskom direktoriju vašeg projekta kreirajte a .env datoteku i zalijepite URL veze s bazom podataka na sljedeći način:

DATABASE_URL=""

Sada instalirajte ove pakete:

npm instaliraj pg typeorm @nestjs/typeorm @nestjs/config

Zatim, samo naprijed i izradite modul baze podataka koristeći CLI alat.

nest g modul baze podataka

Otvori baza podataka/baza podataka.modul.ts datoteku i dodajte sljedeći kod konfiguracije baze podataka:

uvoz { Modul } iz'@nestjs/common';
uvoz { ConfigModule, ConfigService } iz'@nestjs/config';
uvoz { TypeOrmModule } iz'@nestjs/typeorm';
uvoz { Korisnik } iz'../users/models/user.entity';

@Modul({
uvozi: [
TypeOrmModule.forRootAsync({
uvozi: [ConfigModule],
ubaci: [ConfigService],

useFactory: asinkroni (configService: ConfigService) => ({
tip: 'postgres',
url: configService.get('DATABASE_URL'),
entiteti: [Korisnik],
sinkronizirati: pravi
}),
}),
],
})

izvozrazreda Modul baze podataka {}

Ovaj modul baze podataka upravlja vezom konfiguriranjem modula TypeORM sa potrebnim parametrom veze, URL-om baze podataka.

Dodatno, definira entitet korisnika kao dio konfiguracije koja specificira strukturu i svojstva podataka pohranjenih u tablici baze podataka PostgreSQL.

U ovoj će fazi vaš kod vjerojatno izbaciti pogrešku jer još niste izradili korisnički entitet. To ćete učiniti u sljedećim koracima.

Ažurirajte datoteku app.module.ts

Na kraju, ažurirajte modul glavne aplikacije kako biste uključili konfiguraciju za modul baze podataka.

uvoz { Modul } iz'@nestjs/common';
uvoz { ConfigModule } iz'@nestjs/config';
uvoz {AppController} iz'./app.controller';
uvoz { AppService } iz'./app.service';
uvoz { DatabaseModule } iz'./database/database.module';

@Modul({
uvozi: [
ConfigModule.forRoot({
envFilePath: '.env',
}),
Modul baze podataka,
],

kontroleri: [AppController],
pružatelji usluga: [AppService],
})

izvozrazreda AppModule {}

Definirajte korisnički modul

Korisnički modul služi kao centralizirana komponenta, odgovorna za enkapsulaciju i upravljanje logikom potrebnom za implementaciju API-jeve CRUD funkcionalnosti.

Pokrenite ovu terminalsku naredbu za stvaranje korisničkog modula API-ja.

korisnici nest g modula

Alat CLI automatski ažurira app.module.ts datoteku kako bi odražavala učinjene promjene, uz stvaranje korisničkog modula. Ovo osigurava da je novostvoreni modul, korisnici, ispravno integriran u konfiguraciju modula aplikacije.

Stvorite korisnički entitet

TypeORM je biblioteka Object-Relational Mapping (ORM) koja pojednostavljuje interakcije baze podataka u aplikacijama koje koriste TypeScript preslikavanjem JavaScript objekata u tablice baze podataka.

Stvaranjem entiteta User koristeći TypeORM, definirate strukturu i svojstva korisničkih podataka u PostgreSQL bazi podataka.

U imeniku korisnika stvorite novi modeli/user.entity.ts i dodajte sljedeći kod.

uvoz { Entitet, PrimaryGeneratedColumn, Column, } iz"typeorm";

@Entitet()
izvozrazreda Korisnik {
@PrimaryGeneratedColumn()
iskaznica: broj;

@Stupac()
Ime: niz;

@Stupac()
email: niz;
}

The Korisnik entitet definira strukturu korisničkih podataka pohranjenih u bazi podataka. U ovom slučaju to je iskaznica kao stupac primarnog ključa i Ime i elektronička pošta stupce i njihova odgovarajuća svojstva.

Stvorite CRUD API uslugu

Sada izradite API uslugu koja će upravljati logikom za CRUD operacije pokretanjem naredbe u nastavku:

nest g korisnici usluga

Otvori korisnik-auth.service.ts datoteku i dodajte ovaj kod:

uvoz { Injekcioni } iz'@nestjs/common';
uvoz {InjectRepository} iz'@nestjs/typeorm';
uvoz { Spremište } iz'typeorm';
uvoz {Korisnik} iz'./models/user.entity';

@Injekcioni()
izvozrazreda UsersService {
konstruktor(
@InjectRepository(Korisnik)
privatna userRepository: spremište,
) {}

asinkroni pronađiSve(): Obećanje {
povratakovaj.userRepository.find();
}

asinkroni findOne (id: broj): Obećanje {
povratakovaj.userRepository.findOne({ gdje: { id } });
}

asinkroni stvoriti (korisnik: Djelomično): Obećanje {
konst novi korisnik = ovaj.userRepository.create (korisnik);
povratakovaj.userRepository.save (novi korisnik);
}

asinkroni ažuriranje (id: broj, korisnik: Djelomično): Obećanje {
čekatiovaj.userRepository.update (id, korisnik);
povratakovaj.userRepository.findOne({ gdje: { id } });
}

asinkroniizbrisati(iskaznica: broj): Obećanje<poništiti> {
čekatiovaj.userRepository.delete (id);
}
}

Ova klasa UsersService definira različite API metode namijenjene rukovanju CRUD operacijama. Ove metode uključuju dohvaćanje podataka svih korisnika, pronalaženje određenog korisnika korištenjem njegovog ID broja, stvaranje novog korisnika, ažuriranje postojećeg korisnika i način brisanja podataka određenog korisnika u bazi podataka.

Definirajte kontroler za API

Napravite kontroler koji će upravljati krajnjim točkama API-ja za operacije povezane s korisnikom.

korisnici nest g kontrolera

Zatim dodajte kod u nastavku u korisnici.kontroler.ts datoteka.

uvoz { Controller, Get, Post, Body, Put, Param, Delete, NotFoundException, HttpCode } iz'@nestjs/common';
uvoz { UserService } iz'./users.service';
uvoz { Korisnik } iz'./models/user.entity';

@Kontroler('api/korisnici')
izvozrazreda UsersController {
konstruktor(privatna readonly usersService: UserService) {}

@Dobiti()
asinkroni pronađiSve(): Obećanje {
povratakovaj.usersService.findAll();
}

@Post()
@HttpCode(201)
asinkroni stvoriti(@Tijelo() korisnik: Korisnik): Obećanje {
konst createdUser = čekatiovaj.usersService.create (korisnik);
povratak createdUser;
}

@Staviti(':iskaznica')
asinkroni Ažuriraj (@Param('iskaznica') iskaznica: broj, @Tijelo() korisnik: Korisnik): Obećanje<bilo koji> {
čekatiovaj.usersService.update (id, korisnik);
povratak { poruka: 'Korisnik je uspješno ažuriran' };
}

@Izbrisati(':iskaznica')
asinkroniizbrisati(@Param('iskaznica') iskaznica: broj): Obećanje<bilo koji> {
konst korisnik = čekatiovaj.usersService.findOne (id);

ako (!korisnik) {
bacanjenovi NotFoundException('Korisnik ne postoji!');
}

čekatiovaj.usersService.delete (id);
povratak { poruka: 'Korisnik je uspješno izbrisan' };
}
}

Kontroler upravlja API krajnjim točkama za korisničke operacije. Obrađuje GET zahtjeve za dohvaćanje svih korisnika, POST zahtjeve za stvaranje novih korisnika, PUT zahtjeve za ažuriranje postojećih korisnika i DELETE zahtjeve za brisanje korisnika.

Korištenjem UsersService i interakciju s Korisnik entiteta, ovaj kontroler pruža potpuni API za upravljanje korisničkim operacijama na podacima pohranjenim u bazi podataka.

Ažurirajte datoteku users.module.ts

Na kraju, ažurirajte korisnici.modul.ts datoteku kao što je prikazano u nastavku kako biste bili sigurni da ćete uključiti Entitet korisnika i TypeORM modul, koji uspostavlja vezu s bazom podataka.

uvoz { Modul } iz'@nestjs/common';
uvoz { UsersController } iz'./users.controller';
uvoz { UserService } iz'./users.service';
uvoz { TypeOrmModule } iz'@nestjs/typeorm';
uvoz { Korisnik } iz'./models/user.entity';

@Modul({
uvozi: [TypeOrmModule.forFeature([Korisnik])],
kontroleri: [UsersController],
pružatelji usluga: [UsersService]
})

izvozrazreda KorisniciModul {}

Na kraju, samo naprijed i okrenite razvojni poslužitelj da testirate CRUD operacije pomoću Postmana.

npm pokrenuti početak

Poslužitelj će se pokrenuti na portu 3000, a možete mu slati API zahtjeve na http://localhost: 3000/api/korisnika.

Izrada pozadinskih aplikacija s Nest.js

Bez obzira razvijate li jednostavan REST API ili složenu web-aplikaciju, Nest.js nudi sveobuhvatan skup značajki i mogućnosti za izgradnju pouzdanog i robusnog pozadinskog sustava.

Nest.js nudi strukturiraniji pristup razvoju projekta nego Express.js. To osigurava da možete pouzdano graditi, skalirati i održavati složene aplikacije, zahvaljujući njegovom organiziranom i modularnom dizajnu.