Ακολουθήστε αυτό το σεμινάριο για να μάθετε για μερικές συναρπαστικές, συμπληρωματικές τεχνολογίες που μπορείτε να χρησιμοποιήσετε για το επόμενο έργο σας.
Όπως και άλλα πλαίσια Node.js, το Nest.js παρέχει μια ολοκληρωμένη εργαλειοθήκη για τη δημιουργία ισχυρών και επεκτάσιμων υπηρεσιών υποστήριξης. Ωστόσο, είναι σημαντικό να κατανοήσετε πώς να εφαρμόσετε τη δημιουργία, την ανάγνωση, την ενημέρωση και τη διαγραφή (CRUD) λειτουργίες στο Nest.js αποτελεσματικά—αυτές είναι οι πιο θεμελιώδεις λειτουργίες στην ανάπτυξη των API.
Μάθετε πώς να δημιουργείτε ένα Nest.js CRUD REST API χρησιμοποιώντας TypeORM και μια βάση δεδομένων PostgreSQL.
Ξεκινώντας με το Nest.js
Για να ξεκινήσετε, εγκαταστήστε το εργαλείο γραμμής εντολών Nest.js:
npm i -g @nestjs/cli
Στη συνέχεια, δημιουργήστε ένα νέο έργο εκτελώντας:
nest new crud-app
Το εργαλείο CLI θα σας ζητήσει να επιλέξετε έναν διαχειριστή πακέτων, επιλέξτε την επιλογή που θεωρείτε πιο προτιμότερη. θα χρησιμοποιήσουμε npm, ο διαχειριστής πακέτων Node.
Το CLI θα δημιουργήσει ένα βασικό έργο Nest.js με όλα τα απαιτούμενα αρχεία διαμόρφωσης και τις αρχικές εξαρτήσεις που απαιτούνται για την εκτέλεση της εφαρμογής.
Τέλος, μεταβείτε στον κατάλογο του έργου και ξεκινήστε τον διακομιστή ανάπτυξης.
cd crud-app
npm έναρξη λειτουργίας
Μπορείτε να βρείτε τον κωδικό αυτού του έργου σε αυτό GitHub αποθήκη.
Δημιουργήστε μια βάση δεδομένων PostgreSQL
Αυτό το σεμινάριο χρησιμοποιεί μια παρουσία του cloud PostgreSQL, αλλά μπορείτε να ρυθμίσετε μια τοπική βάση δεδομένων PostgreSQL. Μπορείς εγκαταστήστε το PostgreSQL στα Windows, στο macOS, ή σε Linux.
Για να ρυθμίσετε μια παρουσία του cloud PostgreSQL:
- Κατευθυνθείτε προς ElephantSQL, εγγραφείτε και συνδεθείτε στη σελίδα επισκόπησης του λογαριασμού σας.
- Κάντε κλικ στο Δημιουργία νέας παρουσίας κουμπί στο επάνω αριστερό τμήμα της σελίδας για να δημιουργήσετε μια νέα παρουσία για την εφαρμογή σας.
- Συμπληρώστε το όνομα της παρουσίας σας, επιλέξτε το δωρεάν πρόγραμμα και, τέλος, επιλέξτε την περιοχή για να ολοκληρώσετε τη διαδικασία εγκατάστασης.
- Αφού δημιουργήσετε την παρουσία της βάσης δεδομένων, μεταβείτε στο Ρυθμίσεις σελίδα και αντιγράψτε την παρεχόμενη URL βάσης δεδομένων.
Διαμορφώστε τη σύνδεση βάσης δεδομένων
Στον ριζικό κατάλογο του έργου σας, δημιουργήστε ένα .env αρχείο και επικολλήστε τη διεύθυνση URL σύνδεσης της βάσης δεδομένων ως εξής:
DATABASE_URL=""
Τώρα εγκαταστήστε αυτά τα πακέτα:
npm εγκατάσταση pg typeorm @nestjs/typeorm @nestjs/config
Στη συνέχεια, προχωρήστε και δημιουργήστε μια μονάδα βάσης δεδομένων χρησιμοποιώντας το εργαλείο CLI.
βάση δεδομένων της μονάδας nest g
Ανοιξε το database/database.module.ts αρχείο και προσθέστε τον ακόλουθο κώδικα διαμόρφωσης βάσης δεδομένων:
εισαγωγή { Ενότητα } από'@nestjs/common';
εισαγωγή { ConfigModule, ConfigService } από'@nestjs/config';
εισαγωγή { TypeOrmModule } από'@nestjs/typeorm';
εισαγωγή { Χρήστης } από"../users/models/user.entity";@Μονάδα μέτρησης({
εισαγωγές: [
TypeOrmModule.forRootAsync({
εισαγωγές: [ConfigModule],
inject: [ConfigService],useFactory: ασυγχρονισμός (configService: ConfigService) => ({
τύπος: "postgres",
url: configService.get('DATABASE_URL'),
οντότητες: [Χρήστης],
συγχρονίζω: αληθής
}),
}),
],
})
εξαγωγήτάξη DatabaseModule {}
Αυτή η λειτουργική μονάδα βάσης δεδομένων χειρίζεται τη σύνδεση διαμορφώνοντας τη μονάδα TypeORM με την απαιτούμενη παράμετρο σύνδεσης, τη διεύθυνση URL της βάσης δεδομένων.
Επιπλέον, ορίζει την οντότητα χρήστη ως μέρος της διαμόρφωσης που καθορίζει τη δομή και τις ιδιότητες των δεδομένων που είναι αποθηκευμένα στον πίνακα βάσης δεδομένων PostgreSQL.
Σε αυτό το στάδιο, ο κώδικάς σας πιθανότατα θα προκαλέσει σφάλμα επειδή δεν έχετε δημιουργήσει ακόμα την οντότητα χρηστών. Θα το κάνετε στα παρακάτω βήματα.
Ενημερώστε το αρχείο app.module.ts
Τέλος, ενημερώστε την κύρια λειτουργική μονάδα εφαρμογής ώστε να περιλαμβάνει τη διαμόρφωση για τη μονάδα βάσης δεδομένων.
εισαγωγή { Ενότητα } από'@nestjs/common';
εισαγωγή { ConfigModule } από'@nestjs/config';
εισαγωγή { AppController } από"./app.controller";
εισαγωγή { AppService } από"./app.service";
εισαγωγή { DatabaseModule } από"./database/database.module";@Μονάδα μέτρησης({
εισαγωγές: [
ConfigModule.forRoot({
envFilePath: ".env",
}),
DatabaseModule,
],ελεγκτές: [AppController],
πάροχοι: [AppService],
})
εξαγωγήτάξη AppModule {}
Καθορίστε μια ενότητα χρηστών
Η ενότητα χρηστών χρησιμεύει ως ένα κεντρικό στοιχείο, υπεύθυνο για την ενθυλάκωση και τη διαχείριση της λογικής που απαιτείται για την υλοποίηση της λειτουργικότητας CRUD του API.
Εκτελέστε αυτήν την εντολή τερματικού για να δημιουργήσετε τη λειτουργική μονάδα χρηστών του API.
χρήστες της μονάδας nest g
Το εργαλείο CLI ενημερώνει αυτόματα το app.module.ts αρχείο για να αντικατοπτρίζει τις αλλαγές που έγιναν, εκτός από τη δημιουργία της μονάδας χρήστη. Αυτό διασφαλίζει ότι η μονάδα που δημιουργήθηκε πρόσφατα, χρήστες, είναι σωστά ενσωματωμένη στη διαμόρφωση της μονάδας της εφαρμογής.
Δημιουργήστε μια οντότητα χρήστη
Το TypeORM είναι μια βιβλιοθήκη Object-Relational Mapping (ORM) που απλοποιεί τις αλληλεπιδράσεις βάσεων δεδομένων σε εφαρμογές που χρησιμοποιούν TypeScript αντιστοιχίζοντας αντικείμενα JavaScript σε πίνακες βάσεων δεδομένων.
Δημιουργώντας μια οντότητα χρήστη χρησιμοποιώντας το TypeORM, ορίζετε τη δομή και τις ιδιότητες των δεδομένων χρήστη στη βάση δεδομένων PostgreSQL.
Στον κατάλογο χρηστών, δημιουργήστε ένα νέο models/user.entity.ts και προσθέστε τον παρακάτω κώδικα.
εισαγωγή { Entity, PrimaryGeneratedColumn, Column, } από"typeorm";
@Οντότητα()
εξαγωγήτάξη Χρήστης {
@PrimaryGeneratedColumn()
ταυτότητα: αριθμός;@Στήλη()
όνομα: σειρά;
@Στήλη()
ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ: σειρά;
}
ο Χρήστης Η οντότητα ορίζει τη δομή των δεδομένων χρήστη που είναι αποθηκευμένα στη βάση δεδομένων. Σε αυτή την περίπτωση, αυτό είναι ταυτότητα ως στήλη πρωτεύοντος κλειδιού και το όνομα και ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ στήλες και τις αντίστοιχες ιδιότητες τους.
Δημιουργήστε την υπηρεσία CRUD API
Τώρα, δημιουργήστε την υπηρεσία API που θα διαχειρίζεται τη λογική για τις λειτουργίες CRUD εκτελώντας την παρακάτω εντολή:
χρήστες υπηρεσιών nest g
Ανοιξε το user-auth.service.ts αρχείο και προσθέστε αυτόν τον κωδικό:
εισαγωγή { Ενέσιμο } από'@nestjs/common';
εισαγωγή { InjectRepository } από'@nestjs/typeorm';
εισαγωγή { Αποθετήριο } από"typeorm";
εισαγωγή {Χρήστης} από"./models/user.entity";@Ενέσιμα()
εξαγωγήτάξη Υπηρεσία Χρηστών {
κατασκευαστής(
@InjectRepository(Χρήστης)
ιδιωτικός userRepository: Αποθετήριο,
) {}ασυγχρονισμός findAll(): Υπόσχεση
{
ΕΠΙΣΤΡΟΦΗΑυτό.userRepository.find();
}ασυγχρονισμός findOne (αναγνωριστικό: αριθμός): Υπόσχεση
{
ΕΠΙΣΤΡΟΦΗΑυτό.userRepository.findOne({ where: { id } });
}ασυγχρονισμός δημιουργία (χρήστης: Μερική
): Υπόσχεση {
συνθ νέος χρήστης = Αυτό.userRepository.create (χρήστης);
ΕΠΙΣΤΡΟΦΗΑυτό.userRepository.save (νέος χρήστης);
}ασυγχρονισμός ενημέρωση (id: αριθμός, χρήστης: Μερικό
): Υπόσχεση {
αναμένωΑυτό.userRepository.update (αναγνωριστικό, χρήστης);
ΕΠΙΣΤΡΟΦΗΑυτό.userRepository.findOne({ where: { id } });
}
ασυγχρονισμόςδιαγράφω(ταυτότητα: αριθμός): Υπόσχεση<κενός> {
αναμένωΑυτό.userRepository.delete (id);
}
}
Αυτή η κλάση UsersService ορίζει διάφορες μεθόδους API αφιερωμένες στον χειρισμό λειτουργιών CRUD. Αυτές οι μέθοδοι περιλαμβάνουν την ανάκτηση όλων των δεδομένων των χρηστών, την εύρεση ενός συγκεκριμένου χρήστη χρησιμοποιώντας τον αριθμό αναγνωριστικού του, τη δημιουργία ένας νέος χρήστης, η ενημέρωση ενός υπάρχοντος χρήστη και μια μέθοδος για τη διαγραφή των δεδομένων ενός συγκεκριμένου χρήστη στη βάση δεδομένων.
Ορίστε έναν ελεγκτή για το API
Δημιουργήστε έναν ελεγκτή που θα διαχειρίζεται τα τελικά σημεία API για τις λειτουργίες που σχετίζονται με τον χρήστη.
χρήστες του ελεγκτή nest g
Στη συνέχεια, προσθέστε τον παρακάτω κώδικα στο users.controller.ts αρχείο.
εισαγωγή { Controller, Get, Post, Body, Put, Param, Delete, NotFoundException, HttpCode } από'@nestjs/common';
εισαγωγή { Users Service } από"./users.service";
εισαγωγή { Χρήστης } από"./models/user.entity";@Ελεγκτής('api/χρήστες')
εξαγωγήτάξη UsersController {
κατασκευαστής(ιδιωτικός μόνο για ανάγνωση usersService: UsersService) {}@Παίρνω()
ασυγχρονισμός findAll(): Υπόσχεση{
ΕΠΙΣΤΡΟΦΗΑυτό.usersService.findAll();
}@Θέση()
@HttpCode(201)
ασυγχρονισμός δημιουργώ(@Σώμα() χρήστης: Χρήστης: Υπόσχεση{
συνθ δημιουργήθηκεΧρήστης = αναμένωΑυτό.usersService.create (χρήστης);
ΕΠΙΣΤΡΟΦΗ createUser;
}@Βάζω(':ταυτότητα')
ασυγχρονισμός ενημέρωση (@Παραμ('ταυτότητα') id: αριθμός, @Σώμα() χρήστης: Χρήστης: Υπόσχεση<όποιος> {
αναμένωΑυτό.usersService.update (αναγνωριστικό, χρήστης);
ΕΠΙΣΤΡΟΦΗ { μήνυμα: "Ο χρήστης ενημερώθηκε με επιτυχία" };
}@Διαγράφω(':ταυτότητα')
ασυγχρονισμόςδιαγράφω(@Παραμ('ταυτότητα') id: αριθμός): Υπόσχεση<όποιος> {
συνθ χρήστης = αναμένωΑυτό.usersService.findOne (id);αν (!χρήστης) {
βολήνέος NotFoundException('Ο χρήστης δεν υπάρχει!');
}
αναμένωΑυτό.usersService.delete (id);
ΕΠΙΣΤΡΟΦΗ { μήνυμα: "Ο χρήστης διαγράφηκε με επιτυχία" };
}
}
Ο ελεγκτής διαχειρίζεται τα τελικά σημεία API για λειτουργίες χρήστη. Διαχειρίζεται αιτήματα GET για ανάκτηση όλων των χρηστών, αιτήματα POST για δημιουργία νέων χρηστών, αιτήματα PUT για ενημέρωση υπαρχόντων χρηστών και αιτήματα DELETE για διαγραφή χρηστών.
Με τη χρήση του Users Service και αλληλεπίδραση με το Χρήστης οντότητα, αυτός ο ελεγκτής παρέχει ένα πλήρες API για τη διαχείριση λειτουργιών που σχετίζονται με τον χρήστη στα δεδομένα που είναι αποθηκευμένα στη βάση δεδομένων.
Ενημερώστε το αρχείο users.module.ts
Τέλος, ενημερώστε το users.module.ts αρχείο όπως φαίνεται παρακάτω για να βεβαιωθείτε ότι έχετε ενσωματώσει το Οντότητα χρήστη και τη μονάδα TypeORM, η οποία δημιουργεί τη σύνδεση με τη βάση δεδομένων.
εισαγωγή { Ενότητα } από'@nestjs/common';
εισαγωγή { UsersController } από"./users.controller";
εισαγωγή { Users Service } από"./users.service";
εισαγωγή { TypeOrmModule } από'@nestjs/typeorm';
εισαγωγή { Χρήστης } από"./models/user.entity";@Μονάδα μέτρησης({
εισαγωγές: [TypeOrmModule.forFeature([User])],
ελεγκτές: [UsersController],
πάροχοι: [UsersService]
})
εξαγωγήτάξη UsersModule {}
Τέλος, προχωρήστε και γυρίστε τον διακομιστή ανάπτυξης για να δοκιμάσετε τις λειτουργίες CRUD χρησιμοποιώντας το Postman.
npm έναρξη λειτουργίας
Ο διακομιστής θα ξεκινήσει στη θύρα 3000 και μπορείτε να στείλετε αιτήματα API σε αυτόν στη διεύθυνση http://localhost: 3000/api/χρήστες.
Δημιουργία εφαρμογών Backend με το Nest.js
Είτε αναπτύσσετε ένα απλό REST API είτε μια πολύπλοκη εφαρμογή Ιστού, το Nest.js προσφέρει ένα ολοκληρωμένο σύνολο λειτουργιών και δυνατοτήτων για τη δημιουργία ενός αξιόπιστου και ισχυρού συστήματος υποστήριξης.
Το Nest.js προσφέρει μια πιο δομημένη προσέγγιση για την ανάπτυξη έργου από ό, τι το Express.js. Αυτό διασφαλίζει ότι μπορείτε να δημιουργήσετε, να κλιμακώσετε και να διατηρήσετε με σιγουριά σύνθετες εφαρμογές, χάρη στο οργανωμένο και αρθρωτό μοτίβο σχεδίασής του.