Vykdykite šią mokymo programą, kad sužinotumėte apie įdomias, papildomas technologijas, kurias galite naudoti kitam projektui.
Kaip ir kitose „Node.js“ sistemose, „Nest.js“ pateikia išsamų įrankių rinkinį, skirtą patikimoms ir keičiamo dydžio užpakalinėms paslaugoms kurti. Nepaisant to, svarbu suprasti, kaip įdiegti kūrimą, skaitymą, atnaujinimą ir ištrynimą (CRUD) operacijos Nest.js efektyviai – tai yra svarbiausios kūrimo operacijos API.
Sužinokite, kaip sukurti Nest.js CRUD REST API naudojant TypeORM ir PostgreSQL duomenų bazę.
Darbo su Nest.js pradžia
Norėdami pradėti, įdiekite Nest.js komandinės eilutės įrankį:
npm i -g @nestjs/cli
Tada sukurkite naują projektą paleisdami:
Nest new crud-app
CLI įrankis paragins pasirinkti paketų tvarkyklę, pasirinkti jums tinkamiausią parinktį. Mes naudosime npm, mazgo paketų tvarkyklė.
CLI sukurs pagrindinį Nest.js projektą su visais reikalingais konfigūracijos failais ir pradinėmis priklausomybėmis, reikalingomis programai paleisti.
Galiausiai eikite į projekto katalogą ir paleiskite kūrimo serverį.
cd crud-app
npm paleisties pradžia
Šio projekto kodą galite rasti jame GitHub saugykla.
Sukurkite PostgreSQL duomenų bazę
Šioje mokymo programoje naudojamas debesies PostgreSQL egzempliorius, bet vietoj to galite nustatyti vietinę PostgreSQL duomenų bazę. Tu gali įdiegti PostgreSQL sistemoje Windows, „MacOS“., arba Linux.
Norėdami nustatyti debesies PostgreSQL egzempliorių:
- Eikite į ElephantSQL, prisiregistruokite ir prisijunkite prie paskyros apžvalgos puslapio.
- Spustelėkite Sukurti naują egzempliorių mygtuką viršutinėje kairiojoje puslapio skiltyje, kad sukurtumėte naują programos egzempliorių.
- Įveskite egzemplioriaus pavadinimą, pasirinkite nemokamą planą ir galiausiai pasirinkite regioną, kad užbaigtumėte sąrankos procesą.
- Sukūrę duomenų bazės egzempliorių, eikite į nustatymus puslapį ir nukopijuokite pateiktą duomenų bazės URL.
Sukonfigūruokite duomenų bazės ryšį
Savo projekto šakniniame kataloge sukurkite a .env failą ir įklijuokite duomenų bazės ryšio URL taip:
DATABASE_URL=""
Dabar įdiekite šiuos paketus:
npm įdiegti pg typeorm @nestjs/typeorm @nestjs/config
Tada eikite į priekį ir sukurkite duomenų bazės modulį naudodami CLI įrankį.
Nest g modulio duomenų bazė
Atidaryk duomenų bazė/duomenų bazė.module.ts failą ir pridėkite šį duomenų bazės konfigūracijos kodą:
importuoti { Modulis } iš„@nestjs/common“;
importuoti { ConfigModule, ConfigService } iš„@nestjs/config“;
importuoti { TypeOrmModule } iš„@nestjs/typeorm“;
importuoti { Vartotojas } iš„../users/models/user.entity“;@Modulis({
importas: [
TypeOrmModule.forRootAsync({
importuoja: [ConfigModule],
inject: [ConfigService],Naudokite gamyklą: async (configService: ConfigService) => ({
tipo: "postgres",
url: configService.get(„DATABASE_URL“),
subjektai: [Vartotojas],
sinchronizuoti: tiesa
}),
}),
],
})
eksportuotiklasė Duomenų bazės modulis {}
Šis duomenų bazės modulis tvarko ryšį sukonfigūruodamas TypeORM modulį su reikiamu ryšio parametru, duomenų bazės URL.
Be to, jis apibrėžia vartotojo objektą kaip konfigūracijos dalį, kuri nurodo duomenų, saugomų PostgreSQL duomenų bazės lentelėje, struktūrą ir savybes.
Šiame etape jūsų kodas tikriausiai parodys klaidą, nes dar nesukūrėte naudotojų objekto. Tai padarysite atlikdami toliau nurodytus veiksmus.
Atnaujinkite failą app.module.ts
Galiausiai atnaujinkite pagrindinį programos modulį, kad įtrauktumėte duomenų bazės modulio konfigūraciją.
importuoti { Modulis } iš„@nestjs/common“;
importuoti { ConfigModule } iš„@nestjs/config“;
importuoti { AppController } iš„./app.controller“;
importuoti { AppService } iš„./app.service“;
importuoti { Duomenų bazės modulis } iš'./database/database.module';@Modulis({
importas: [
ConfigModule.forRoot({
envFilePath: „.env“,
}),
Duomenų bazės modulis,
],valdikliai: [AppController],
teikėjai: [AppService],
})
eksportuotiklasė AppModule {}
Apibrėžkite vartotojų modulį
Vartotojų modulis yra centralizuotas komponentas, atsakingas už logikos, reikalingos API CRUD funkcijoms įgyvendinti, inkapsuliavimą ir valdymą.
Paleiskite šią terminalo komandą, kad sukurtumėte API vartotojų modulį.
nest g modulio naudotojai
CLI įrankis automatiškai atnaujina app.module.ts failą, kad atspindėtų atliktus pakeitimus, be vartotojo modulio sukūrimo. Taip užtikrinama, kad naujai sukurtas modulis, vartotojai, būtų tinkamai integruotas į programos modulio konfigūraciją.
Sukurkite vartotojo objektą
TypeORM yra objektų ir ryšių atvaizdavimo (ORM) biblioteka, kuri supaprastina duomenų bazių sąveiką programose, kurios naudoja TypeScript, susiejant JavaScript objektus su duomenų bazės lentelėmis.
Kurdami vartotojo objektą naudodami TypeORM, apibrėžiate vartotojo duomenų struktūrą ir savybes PostgreSQL duomenų bazėje.
Vartotojų kataloge sukurkite naują models/user.entity.ts ir pridėkite šį kodą.
importuoti { Entity, PrimaryGeneratedColumn, Column, } iš"tipo forma";
@Subjektas()
eksportuotiklasė Vartotojas {
@PrimaryGeneratedColumn()
ID: numerį;@Stulpelis()
vardas: styga;
@Stulpelis()
paštas: styga;
}
The Vartotojas subjektas apibrėžia duomenų bazėje saugomų vartotojo duomenų struktūrą. Šiuo atveju tai yra id kaip pagrindinio rakto stulpelį ir vardas ir paštu stulpelius ir atitinkamas jų savybes.
Sukurkite CRUD API paslaugą
Dabar sukurkite API paslaugą, kuri valdys CRUD operacijų logiką, vykdydami toliau pateiktą komandą:
nest g paslaugos vartotojai
Atidaryk user-auth.service.ts failą ir pridėkite šį kodą:
importuoti { Injekcinis } iš„@nestjs/common“;
importuoti { InjectRepository } iš„@nestjs/typeorm“;
importuoti { Saugykla } iš'tipo forma';
importuoti {Vartotojas} iš„./models/user.entity“;@Injekcinis()
eksportuotiklasė UsersService {
konstruktorius(
@InjectRepository(Vartotojas)
privatus userRepository: saugykla,
) {}async rasti viską (): Pažadas
{
grąžintitai.userRepository.find();
}async findOne (id: numerį): Pažadas
{
grąžintitai.userRepository.findOne({ kur: { id } });
}async sukurti (vartotojas: dalinis
): Pažadas {
konst naujas vartotojas = tai.userRepository.create (vartotojas);
grąžintitai.userRepository.save (naujas vartotojas);
}async atnaujinti (id: numerį, vartotojas: dalinis
): Pažadas {
lauktitai.userRepository.update (id, user);
grąžintitai.userRepository.findOne({ kur: { id } });
}
asyncIštrinti(id: numerį): Pažadas<tuštuma> {
lauktitai.userRepository.delete (id);
}
}
Ši UsersService klasė apibrėžia įvairius API metodus, skirtus CRUD operacijoms tvarkyti. Šie metodai apima visų vartotojų duomenų gavimą, konkretaus vartotojo suradimą naudojant jo ID numerį, kūrimą naujas vartotojas, esamo vartotojo atnaujinimas ir konkretaus vartotojo duomenų ištrynimo iš duomenų bazės būdas.
Apibrėžkite API valdiklį
Sukurkite valdiklį, kuris valdys su vartotoju susijusių operacijų API galutinius taškus.
nest g valdiklio naudotojai
Tada pridėkite toliau esantį kodą prie users.controller.ts failą.
importuoti { Valdiklis, Gauti, Paskelbti, Turinys, Įdėti, Parametras, Ištrinti, NotFoundException, HttpCode } iš„@nestjs/common“;
importuoti { UsersService } iš'./users.service';
importuoti { Vartotojas } iš„./models/user.entity“;@Controller("api / vartotojai")
eksportuotiklasė UsersController {
konstruktorius(privatus readonly usersService: UsersService) {}@Gauti()
async rasti viską (): Pažadas{
grąžintitai.usersService.findAll();
}@Įrašas()
@HttpCode(201)
async sukurti (@Kūnas() vartotojas: naudotojas): Pažadas{
konst sukurtasVartotojas = lauktitai.usersService.create (vartotojas);
grąžinti sukurtasVartotojas;
}@Put(':id')
async atnaujinti (@Param('id') ID: numerį, @Kūnas() vartotojas: naudotojas): Pažadas<bet koks> {
lauktitai.usersService.update (id, user);
grąžinti { pranešimas: „Vartotojas sėkmingai atnaujintas“ };
}@Ištrinti(':id')
asyncIštrinti(@Param('id') ID: numerį): Pažadas<bet koks> {
konst vartotojas = lauktitai.usersService.findOne (id);jeigu (!Vartotojas) {
mestinaujas NotFoundException('Vartotojas neegzistuoja!');
}
lauktitai.usersService.delete (id);
grąžinti { pranešimas: „Vartotojas sėkmingai ištrintas“ };
}
}
Valdiklis tvarko vartotojo operacijų API galutinius taškus. Jis tvarko GET užklausas, skirtas nuskaityti visus vartotojus, POST užklausas sukurti naujus vartotojus, PUT užklausas atnaujinti esamus vartotojus ir DELETE užklausas ištrinti vartotojus.
Naudojant Vartotojų paslauga ir bendraujant su Vartotojas subjektas, šis valdiklis suteikia visą API, skirtą su vartotoju susijusioms operacijoms, susijusioms su duomenų bazėje saugomais duomenimis, valdyti.
Atnaujinkite failą users.module.ts
Galiausiai atnaujinkite users.module.ts failą, kaip parodyta toliau, kad įsitikintumėte, jog įtraukėte Vartotojo subjektas ir TypeORM modulis, užmezgantis ryšį su duomenų baze.
importuoti { Modulis } iš„@nestjs/common“;
importuoti { UsersController } iš'./users.controller';
importuoti { UsersService } iš'./users.service';
importuoti { TypeOrmModule } iš„@nestjs/typeorm“;
importuoti { Vartotojas } iš„./models/user.entity“;@Modulis({
importuoja: [TypeOrmModule.forFeature([User])],
valdikliai: [UsersController],
teikėjai: [UsersService]
})
eksportuotiklasė Vartotojų modulis {}
Galiausiai eikite į priekį ir sukite kūrimo serverį, kad išbandytumėte CRUD operacijas naudodami „Postman“.
npm paleisties pradžia
Serveris pradės veikti nuo 3000 prievado ir galėsite siųsti API užklausas į jį adresu http://localhost: 3000 / api / naudotojai.
Programų kūrimas naudojant Nest.js
Nesvarbu, ar kuriate paprastą REST API, ar sudėtingą žiniatinklio programą, „Nest.js“ siūlo platų funkcijų ir galimybių rinkinį, kad būtų galima sukurti patikimą ir tvirtą užpakalinę sistemą.
Nest.js siūlo struktūriškesnį požiūrį į projektų kūrimą nei Express.js. Tai užtikrina, kad dėl organizuoto ir modulinio dizaino modelio galite užtikrintai kurti, keisti mastelį ir prižiūrėti sudėtingas programas.