Seuraa tätä opetusohjelmaa saadaksesi tietoa jännittävistä, toisiaan täydentävistä teknologioista, joita voit käyttää seuraavassa projektissasi.
Muiden Node.js-kehysten tapaan Nest.js tarjoaa kattavan työkalupakin kestävien ja skaalautuvien taustapalveluiden rakentamiseen. Siitä huolimatta on tärkeää ymmärtää, miten luonti, lukeminen, päivitys ja poistaminen toteutetaan (CRUD) -toiminnot Nest.js: ssä tehokkaasti – nämä ovat kehitystyön tärkeimmät toiminnot sovellusliittymistä.
Opi rakentamaan Nest.js CRUD REST -sovellusliittymä TypeORM: n ja PostgreSQL-tietokannan avulla.
Nest.js: n käytön aloittaminen
Aloita asentamalla Nest.js-komentorivityökalu:
npm i -g @nestjs/cli
Luo seuraavaksi uusi projekti suorittamalla:
nest uusi crud-sovellus
CLI-työkalu kehottaa sinua valitsemaan paketinhallinnan, valitse haluamasi vaihtoehto. Me käytämme npm, Node-pakettien hallinta.
CLI perustaa Nest.js-perusprojektin, jossa on kaikki sovelluksen suorittamiseen vaadittavat määritystiedostot ja alkuperäiset riippuvuudet.
Siirry lopuksi projektihakemistoon ja käynnistä kehityspalvelin.
cd crud-app
npm ajon aloitus
Löydät tämän projektin koodin siitä GitHub arkisto.
Luo PostgreSQL-tietokanta
Tässä opetusohjelmassa käytetään PostgreSQL-pilvi-ilmentymää, mutta voit määrittää sen sijaan paikallisen PostgreSQL-tietokannan. Sinä pystyt asenna PostgreSQL Windowsiin, macOS: ssä, tai Linuxissa.
Pilvi PostgreSQL -esiintymän määrittäminen:
- Suuntaa kohti ElephantSQL, rekisteröidy ja kirjaudu sisään tilisi yleiskatsaussivulle.
- Klikkaa Luo uusi ilmentymä -painiketta sivun vasemmassa yläkulmassa luodaksesi uuden esiintymän sovelluksellesi.
- Täytä ilmentymäsi nimi, valitse ilmainen sopimus ja valitse lopuksi alue suorittaaksesi asennusprosessin loppuun.
- Kun olet luonut tietokannan ilmentymän, siirry kohtaan asetukset sivu ja kopioi toimitettu tietokannan URL-osoite.
Määritä tietokantayhteys
Luo projektisi juurihakemistoon a .env tiedosto ja liitä tietokantayhteyden URL-osoite seuraavasti:
DATABASE_URL=""
Asenna nyt nämä paketit:
npm asenna pg typeorm @nestjs/typeorm @nestjs/config
Luo seuraavaksi tietokantamoduuli CLI-työkalulla.
nest g -moduulitietokanta
Avaa tietokanta/database.module.ts tiedosto ja lisää seuraava tietokannan määrityskoodi:
tuonti { Moduuli } alkaen"@nestjs/common";
tuonti { ConfigModule, ConfigService } alkaen'@nestjs/config';
tuonti { TypeOrmModule } alkaen'@nestjs/typeorm';
tuonti { Käyttäjä } alkaen'../users/models/user.entity';@Moduuli({
tuonti: [
TypeOrmModule.forRootAsync({
tuonti: [ConfigModule],
inject: [ConfigService],useFactory: asynk (configService: ConfigService) => ({
tyyppi: "postgres",
url: configService.get('DATABASE_URL'),
entiteetit: [Käyttäjä],
synkronoida: totta
}),
}),
],
})
viedäluokkaa Tietokantamoduuli {}
Tämä tietokantamoduuli käsittelee yhteyden määrittämällä TypeORM-moduulin vaaditulla yhteysparametrilla, tietokannan URL-osoitteella.
Lisäksi se määrittää User-entiteetin osaksi konfiguraatiota, joka määrittää PostgreSQL-tietokantataulukkoon tallennettujen tietojen rakenteen ja ominaisuudet.
Tässä vaiheessa koodisi antaa todennäköisesti virheilmoituksen, koska et ole vielä luonut käyttäjäkokonaisuutta. Teet sen seuraavissa vaiheissa.
Päivitä tiedosto app.module.ts
Päivitä lopuksi pääsovellusmoduuli sisältämään tietokantamoduulin määritykset.
tuonti { Moduuli } alkaen"@nestjs/common";
tuonti { ConfigModule } alkaen'@nestjs/config';
tuonti { AppController } alkaen'./app.controller';
tuonti { AppService } alkaen'./app.service';
tuonti { Tietokantamoduuli } alkaen'./database/database.module';@Moduuli({
tuonti: [
ConfigModule.forRoot({
envFilePath: ".env",
}),
Tietokantamoduuli,
],ohjaimet: [AppController],
palveluntarjoajat: [AppService],
})
viedäluokkaa AppModule {}
Määritä käyttäjämoduuli
Käyttäjämoduuli toimii keskitettynä komponenttina, joka vastaa API: n CRUD-toiminnallisuuden toteuttamiseen tarvittavan logiikan kapseloinnista ja hallinnasta.
Suorita tämä päätekomento luodaksesi API: n käyttäjämoduuli.
nest g -moduulin käyttäjät
CLI-työkalu päivittää automaattisesti app.module.ts tiedosto, joka kuvastaa tehtyjä muutoksia käyttäjämoduulin luomisen lisäksi. Tämä varmistaa, että juuri luotu moduuli, käyttäjät, on integroitu oikein sovelluksen moduulikokoonpanoon.
Luo käyttäjäkokonaisuus
TypeORM on Object-Relational Mapping (ORM) -kirjasto, joka yksinkertaistaa tietokantavuorovaikutusta sovelluksissa, jotka käyttävät TypeScriptiä yhdistämällä JavaScript-objektit tietokantataulukoihin.
Luomalla User-entiteetin TypeORM: n avulla määrität PostgreSQL-tietokannan käyttäjätietojen rakenteen ja ominaisuudet.
Luo käyttäjähakemistossa uusi mallit/user.entity.ts ja lisää seuraava koodi.
tuonti { Entity, PrimaryGeneratedColumn, Column, } alkaen"tyyppimuoto";
@Entiteetti()
viedäluokkaa Käyttäjä {
@PrimaryGeneratedColumn()
id: määrä;@Sarake()
nimi: merkkijono;
@Sarake()
sähköposti: merkkijono;
}
The Käyttäjä entiteetti määrittelee tietokantaan tallennettujen käyttäjätietojen rakenteen. Tässä tapauksessa se on id ensisijaisena avainsarakkeena ja nimi ja sähköposti sarakkeita ja niitä vastaavia ominaisuuksia.
Luo CRUD API -palvelu
Luo nyt API-palvelu, joka hallitsee CRUD-toimintojen logiikkaa suorittamalla alla olevan komennon:
nest g -palvelun käyttäjille
Avaa user-auth.service.ts tiedosto ja lisää tämä koodi:
tuonti { Injektoitava } alkaen"@nestjs/common";
tuonti { InjectRepository } alkaen'@nestjs/typeorm';
tuonti { Arkisto } alkaen'tyyppimuoto';
tuonti {Käyttäjä} alkaen'./models/user.entity';@Injektoitava()
viedäluokkaa UsersService {
rakentaja(
@InjectRepository(käyttäjä)
yksityinen userRepository: Arkisto,
) {}asynk löydä kaikki(): Lupaus
{
palataTämä.userRepository.find();
}asynk findOne (id: määrä): Lupaus
{
palataTämä.userRepository.findOne({ missä: { id } });
}asynk luo (käyttäjä: Osittainen
): Lupaus {
konst uusi käyttäjä = Tämä.userRepository.create (käyttäjä);
palataTämä.userRepository.save (uusi käyttäjä);
}asynk päivitys (id: määrä, käyttäjä: Osittainen
): Lupaus {
odottaaTämä.userRepository.update (tunnus, käyttäjä);
palataTämä.userRepository.findOne({ missä: { id } });
}
asynkpoistaa(tunnus: määrä): Lupaus<mitätön> {
odottaaTämä.userRepository.delete (id);
}
}
Tämä UsersService-luokka määrittelee erilaisia API-menetelmiä, jotka on omistettu CRUD-toimintojen käsittelyyn. Näitä menetelmiä ovat kaikkien käyttäjien tietojen hakeminen, tietyn käyttäjän etsiminen hänen tunnusnumerollaan ja luominen uusi käyttäjä, olemassa olevan käyttäjän päivittäminen ja menetelmä tietyn käyttäjän tietojen poistamiseksi tietokannasta.
Määritä ohjain API: lle
Luo ohjain, joka hallitsee käyttäjäkohtaisten toimintojen API-päätepisteitä.
nest g -ohjaimen käyttäjät
Lisää seuraavaksi alla oleva koodi users.controller.ts tiedosto.
tuonti { Ohjain, Get, Post, Body, Put, Param, Delete, NotFoundException, HttpCode } alkaen"@nestjs/common";
tuonti { UsersService } alkaen'./users.service';
tuonti { Käyttäjä } alkaen'./models/user.entity';@Ohjain("api/käyttäjät")
viedäluokkaa UsersController {
rakentaja(yksityinen readonly usersService: UsersService) {}@Saada()
asynk löydä kaikki(): Lupaus{
palataTämä.usersService.findAll();
}@Lähettää()
@HttpCode(201)
asynk luoda(@Keho() käyttäjä: Käyttäjä): Lupaus{
konst luotuKäyttäjä = odottaaTämä.usersService.create (käyttäjä);
palata luotuKäyttäjä;
}@Laittaa(':id')
asynk päivitä (@Param('id') id: määrä, @Keho() käyttäjä: Käyttäjä): Lupaus<minkä tahansa> {
odottaaTämä.usersService.update (tunnus, käyttäjä);
palata { viesti: "Käyttäjä päivitetty onnistuneesti" };
}@Poistaa(':id')
asynkpoistaa(@Param('id') id: määrä): Lupaus<minkä tahansa> {
konst käyttäjä = odottaaTämä.usersService.findOne (id);jos (!käyttäjä) {
heittääUusi NotFoundException('Käyttäjää ei ole olemassa!');
}
odottaaTämä.usersService.delete (id);
palata { viesti: "Käyttäjä poistettu onnistuneesti" };
}
}
Ohjain hallitsee käyttäjien toimintojen API-päätepisteitä. Se käsittelee GET-pyynnöt kaikkien käyttäjien hakemiseksi, POST-pyynnöt uusien käyttäjien luomiseksi, PUT-pyynnöt olemassa olevien käyttäjien päivittämiseksi ja DELETE-pyynnöt käyttäjien poistamiseksi.
Hyödyntämällä UsersService ja vuorovaikutuksessa Käyttäjä Tämä ohjain tarjoaa täydellisen API: n tietokantaan tallennettujen tietojen käyttäjiin liittyvien toimintojen hallintaan.
Päivitä user.module.ts-tiedosto
Päivitä lopuksi users.module.ts tiedosto alla olevan kuvan mukaisesti varmistaaksesi, että sisällytät sen Käyttäjäkokonaisuus ja TypeORM-moduuli, joka muodostaa yhteyden tietokantaan.
tuonti { Moduuli } alkaen"@nestjs/common";
tuonti { UsersController } alkaen'./users.controller';
tuonti { UsersService } alkaen'./users.service';
tuonti { TypeOrmModule } alkaen'@nestjs/typeorm';
tuonti { Käyttäjä } alkaen'./models/user.entity';@Moduuli({
tuonti: [TypeOrmModule.forFeature([User])],
ohjaimet: [UsersController],
palveluntarjoajat: [UsersService]
})
viedäluokkaa UsersModule {}
Lopuksi jatka kehityspalvelimen testaamiseksi CRUD-toiminnot Postmanin avulla.
npm ajon aloitus
Palvelin käynnistyy portista 3000, ja voit lähettää API-pyyntöjä sille osoitteessa http://localhost: 3000/api/käyttäjät.
Taustasovellusten rakentaminen Nest.js: n avulla
Olitpa kehittämässä yksinkertaista REST-sovellusliittymää tai monimutkaista verkkosovellusta, Nest.js tarjoaa kattavan joukon ominaisuuksia ja ominaisuuksia luotettavan ja vankan taustajärjestelmän rakentamiseen.
Nest.js tarjoaa jäsennellymmän lähestymistavan projektien kehittämiseen kuin Express.js. Tämä varmistaa, että voit luottavaisesti rakentaa, skaalata ja ylläpitää monimutkaisia sovelluksia sen organisoidun ja modulaarisen suunnittelumallin ansiosta.