recherche
Maisoninterface Webjs tutorielExemple des opérations NESTJS CRUD

NESTJS CRUD Operations Exemple

Cet exemple démontre une opération CRUD (créer, lire, mettre à jour, supprimer) pour une entité Cat à l'aide de NESTJS. Nous utiliserons Typeorm pour l'interaction de la base de données. Supposons que vous ayez une entité Cat définie comme suit:

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class Cat {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  age: number;
}

Maintenant, créons un fichier cats.controller.ts:

import { Controller, Get, Post, Body, Param, Delete, Put } from '@nestjs/common';
import { CreateCatDto } from './create-cat.dto';
import { Cat } from './cat.entity';
import { CatsService } from './cats.service';

@Controller('cats')
export class CatsController {
  constructor(private readonly catsService: CatsService) {}

  @Post()
  async create(@Body() createCatDto: CreateCatDto): Promise<Cat> {
    return this.catsService.create(createCatDto);
  }

  @Get()
  async findAll(): Promise<Cat[]> {
    return this.catsService.findAll();
  }

  @Get(':id')
  async findOne(@Param('id') id: string): Promise<Cat> {
    return this.catsService.findOne(+id);
  }

  @Put(':id')
  async update(@Param('id') id: string, @Body() updateCatDto: CreateCatDto): Promise<Cat> {
    return this.catsService.update(+id, updateCatDto);
  }

  @Delete(':id')
  async remove(@Param('id') id: string): Promise<void> {
    return this.catsService.remove(+id);
  }
}

et un cats.service.ts:

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Cat } from './cat.entity';
import { CreateCatDto } from './create-cat.dto';

@Injectable()
export class CatsService {
  constructor(
    @InjectRepository(Cat)
    private catsRepository: Repository<Cat>,
  ) {}

  async create(cat: CreateCatDto): Promise<Cat> {
    const newCat = this.catsRepository.create(cat);
    return this.catsRepository.save(newCat);
  }

  async findAll(): Promise<Cat[]> {
    return this.catsRepository.find();
  }

  async findOne(id: number): Promise<Cat> {
    return this.catsRepository.findOneBy({ id });
  }

  async update(id: number, cat: CreateCatDto): Promise<Cat> {
    await this.catsRepository.update(id, cat);
    return this.catsRepository.findOneBy({ id });
  }

  async remove(id: number): Promise<void> {
    await this.catsRepository.delete(id);
  }
}

correspondant à installer les packages nécessaires: npm install @nestjs/typeorm typeorm et configurer votre connexion de base dans votre ormconfig.json. Cela fournit un exemple complet, bien que basique,

comment puis-je implémenter les opérations de crud de base à l'aide de NESTJS?

Implémentation des opérations CRUD de base dans les NESTJ implique généralement ces étapes:

  1. Définir votre entité: Création d'une classe de type représentant votre modèle de données en utilisant des décorateurs de types (@Entity, @PriMaryGeneratedColumn, @Column, etc.). Cela définit la structure de vos données dans la base de données.
  2. Créer un service: Cette couche gère la logique métier pour interagir avec vos données. Il utilise un référentiel (généralement fourni par Typeorm) pour effectuer des opérations de base de données. Le service résume la logique d'accès aux données, permettant au contrôleur de rester propre et de se concentrer sur la manipulation des demandes.
  3. Créer un contrôleur: Cette couche gère les demandes HTTP entrantes (publier, obtenir, mettre, supprimer) et déléguer la manipulation réelle des données au service. Les décorateurs de NESTJS (@Controller, @get, @post, @put, @delete, @body, @param) sont utilisés pour cartographier les demandes HTTP aux méthodes de contrôleur.
  4. Utiliser une référentiel (par exemple, Typeorm): Un référentiel fournit une couche d'abstraction pour l'interaction de données. Il gère les opérations spécifiques à la base de données, permettant à votre service de rester indépendant de la technologie de base de données sous-jacente. Typeorm est un choix populaire, offrant des fonctionnalités telles que la génération automatique de schéma et les migrations.
  5. Objets de transfert de données (DTOS): Créer des DTO pour valider et structurer les données reçues des demandes HTTP. Cela améliore la sécurité et améliore la lisibilité du code.

Quelles sont les meilleures pratiques pour structurer une application NESTJS avec des fonctionnalités crud?

Plusieurs meilleures pratiques améliorent la maintenabilité et l'évolutivité de votre application NESTJS:

  • Conception modulaire: Organisez votre code en modules en fonction des fonctionnalités (par exemple, module utilisateur, module de produit). Cela améliore l'organisation et la réutilisabilité du code.
  • Séparation des préoccupations: Séparent strictement les préoccupations entre les contrôleurs (demandes de traitement), les services (logique métier) et les référentiels (accès aux données).
  • Utiliser des DTO: Utilisez toujours des DTO pour valider et former l'observation et les données existantes. Cela améliore la sécurité et la cohérence des données.
  • Validation des entrées: Valider les entrées utilisateur à l'aide de la classe-validatrice ou des bibliothèques similaires pour empêcher les données non valides d'atteindre votre base de données.
  • Gestion des erreurs: Implémentez les mécanismes de gestion des erreurs robustes pour gérer gracieusement les exceptions et le rendement de l'état HTTP approprié HTTP. codes.
  • Tests: Écrivez des tests d'unité et d'intégration pour assurer l'exactitude et la fiabilité de votre code.
  • Versioning: Envisagez d'implémenter les versions de l'API pour gérer les modifications de votre API au fil du temps.

Les pièges à éviter comprennent:

    Validation d'entrée insuffisante:
  • Ne pas valider les entrées des utilisateurs peut entraîner des vulnérabilités de sécurité (par exemple, l'injection de SQL) et les incohérences de données.
  • Ignorer la gestion des erreurs:
  • Le manque de traitement des erreurs approprié peut entraîner des accidents des applications ou des comportements inattendus. Gérez toujours les exceptions potentielles et renvoyez des messages d'erreur significatifs.
  • Mélange de logique métier dans les contrôleurs:
  • Les contrôleurs doivent principalement se concentrer sur les demandes de routage. La logique métier complexe doit résider dans les services.
  • L'accès direct à la base de données dans les contrôleurs:
  • Les contrôleurs ne doivent jamais interagir directement avec la base de données. Utilisez toujours une couche de service et de référentiel.
  • Contrôleurs trop complexes:
  • Gardez les contrôleurs maigres et concentrés. Les grands contrôleurs complexes sont difficiles à entretenir et à tester.
  • Le manque de tests:
  • Les tests insuffisants peuvent entraîner des bogues et des régressions. Écrivez des tests unitaires pour les services et les tests d'intégration pour les contrôleurs et les référentiels.
  • Ignorer la pagination et le filtrage:
  • pour les grands ensembles de données, implémentez la pagination et le filtrage pour améliorer les performances et l'expérience utilisateur. Ne récupérez pas l'intégralité de l'ensemble de données pour chaque demande.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Applications JavaScript: de front-end à back-endApplications JavaScript: de front-end à back-endMay 04, 2025 am 12:12 AM

JavaScript peut être utilisé pour le développement frontal et back-end. L'endouage frontal améliore l'expérience utilisateur via les opérations DOM, et le back-end gère les tâches du serveur via Node.js. 1. Exemple frontal: modifiez le contenu du texte de la page Web. 2. Exemple backend: Créez un serveur Node.js.

Python vs JavaScript: Quelle langue devez-vous apprendre?Python vs JavaScript: Quelle langue devez-vous apprendre?May 03, 2025 am 12:10 AM

Le choix de Python ou JavaScript doit être basé sur le développement de carrière, la courbe d'apprentissage et l'écosystème: 1) le développement de carrière: Python convient à la science des données et au développement de back-end, tandis que JavaScript convient au développement frontal et complet. 2) Courbe d'apprentissage: la syntaxe Python est concise et adaptée aux débutants; La syntaxe JavaScript est flexible. 3) Ecosystème: Python possède de riches bibliothèques informatiques scientifiques, et JavaScript a un puissant cadre frontal.

Frameworks javascript: alimenter le développement Web moderneFrameworks javascript: alimenter le développement Web moderneMay 02, 2025 am 12:04 AM

La puissance du cadre JavaScript réside dans la simplification du développement, l'amélioration de l'expérience utilisateur et les performances des applications. Lorsque vous choisissez un cadre, considérez: 1. Taille et complexité du projet, 2. Expérience d'équipe, 3. Écosystème et soutien communautaire.

La relation entre JavaScript, C et BrowsersLa relation entre JavaScript, C et BrowsersMay 01, 2025 am 12:06 AM

INTRODUCTION Je sais que vous pouvez le trouver étrange, que doit faire exactement JavaScript, C et Browser? Ils semblent sans rapport, mais en fait, ils jouent un rôle très important dans le développement Web moderne. Aujourd'hui, nous discuterons du lien étroit entre ces trois. Grâce à cet article, vous apprendrez comment JavaScript fonctionne dans le navigateur, le rôle de C dans le moteur du navigateur et comment ils fonctionnent ensemble pour stimuler le rendu et l'interaction des pages Web. Nous connaissons tous la relation entre JavaScript et Browser. JavaScript est la langue principale du développement frontal. Il fonctionne directement dans le navigateur, rendant les pages Web vives et intéressantes. Vous êtes-vous déjà demandé pourquoi javascr

Node.js diffuse avec dactylographieNode.js diffuse avec dactylographieApr 30, 2025 am 08:22 AM

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Python vs JavaScript: considérations de performance et d'efficacitéPython vs JavaScript: considérations de performance et d'efficacitéApr 30, 2025 am 12:08 AM

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

Les origines de JavaScript: explorer son langage d'implémentationLes origines de JavaScript: explorer son langage d'implémentationApr 29, 2025 am 12:51 AM

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

Dans les coulisses: quel langage alimente JavaScript?Dans les coulisses: quel langage alimente JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire