Partager via


Créer une application Angular avec l’API d’Azure Cosmos DB pour MongoDB - Ajouter des fonctions CRUD à l’application

S’APPLIQUE À : Mongodb

Important

Voulez-vous migrer une application MongoDB existante ou utiliser des fonctionnalités MQL (MongoDB Query Language) ? Considérez Azure DocumentDB.

Recherchez-vous une solution de base de données pour des scénarios à grande échelle avec un contrat de niveau de service de disponibilité (SLA) de 99,999%, une mise à l’échelle automatique instantanée et un basculement automatique entre plusieurs régions ? Considérez Azure Cosmos DB pour NoSQL.

Ce tutoriel en plusieurs parties montre comment créer une application écrite en Node.js avec Express et Angular, puis comment la connecter à votre compte Azure Cosmos DB configuré avec l’API d’Azure Cosmos DB pour MongoDB. La partie 6 de ce didacticiel est basée sur la partie 5 et aborde les tâches suivantes :

  • Créer des fonctions Publier, Placer et Supprimer pour le service de héros
  • Exécuter l’application

Prérequis

Avant de commencer cette partie du didacticiel, assurez-vous d’avoir effectué les étapes de la partie 5 du didacticiel.

Conseil

Ce didacticiel vous guide à travers les étapes pour générer l’application pas à pas. Si vous souhaitez télécharger le projet terminé, vous pouvez obtenir l’application complète à partir du référentiel cosmosdb-angular sur GitHub.

Ajouter une fonction Publier au service de héros

  1. Dans Visual Studio Code, ouvrez les fichiers routes.js et hero.service.js côte à côte en appuyant sur le bouton Fractionner l’éditeur.

    Vous pouvez voir que la ligne 7 du fichier routes.js appelle la fonction getHeroes de la ligne 5 du fichier hero.service.js. Nous devons recréer cette association pour les fonctions Publier, Placer et Supprimer.

    Fichiers routes.js et hero.service.js dans Visual Studio Code

    Commençons par mettre en place le service de héros.

  2. Copiez le code suivant dans le fichier hero.service.js après la fonction getHeroes et avant module.exports. Ce code :

    • Utilise le modèle de héros pour publier un nouveau héros.
    • Vérifie les réponses pour voir s’il existe une erreur et retourne une valeur d’état 500.
    function postHero(req, res) {
      const originalHero = { uid: req.body.uid, name: req.body.name, saying: req.body.saying };
      const hero = new Hero(originalHero);
      hero.save(error => {
        if (checkServerError(res, error)) return;
        res.status(201).json(hero);
        console.log('Hero created successfully!');
      });
    }
    
    function checkServerError(res, error) {
      if (error) {
        res.status(500).send(error);
        return error;
      }
    }
    
  3. Dans le fichier hero.service.js, mettez à jour le module.exports pour inclure la nouvelle fonction postHero.

    module.exports = {
      getHeroes,
      postHero
    };
    
  4. Dans le fichier routes.js, ajoutez un routeur pour la fonction post après le routeur get. Ce routeur publie un héros à la fois. En structurant ainsi le fichier du routeur, tous les points de terminaison API disponibles s’affichent clairement et le fichier hero.service.js fait tout le travail.

    router.post('/hero', (req, res) => {
      heroService.postHero(req, res);
    });
    
  5. Vérifiez que tout fonctionne en exécutant l’application. Dans Visual Studio Code, enregistrez toutes vos modifications, sélectionnez le bouton Déboguer sur le côté gauche, puis sélectionnez le bouton Démarrer le débogage .

  6. Retournez sur votre navigateur Internet et ouvrez l’onglet Réseau d’outils développeur (en appuyant sur F12 sur la plupart des ordinateurs). Accédez à http://localhost:3000 pour voir les appels effectués sur le réseau.

    Onglet Mise en réseau dans Chrome qui montre l’activité réseau

  7. Ajoutez un nouveau héros en sélectionnant le bouton Ajouter un nouveau héros. Entrez l’ID « 999 », le nom « Fred » et le message « Bonjour », puis sélectionnez Enregistrer. Dans l’onglet Réseau, vous devriez voir que vous avez envoyé une requête POST pour un nouveau héros.

    Onglet Mise en réseau dans Chrome qui montre l’activité réseau des fonctions Get et Post

    Revenons en arrière pour ajouter les fonctions Placer et Supprimer à l’application.

Ajoutez les fonctions Placer et Supprimer

  1. Dans le fichier routes.js, ajoutez les routeurs put et delete après le routeur de publication.

    router.put('/hero/:uid', (req, res) => {
      heroService.putHero(req, res);
    });
    
    router.delete('/hero/:uid', (req, res) => {
      heroService.deleteHero(req, res);
    });
    
  2. Copiez le code suivant dans le fichier hero.service.js après la fonction checkServerError. Ce code :

    • Crée les fonctions put et delete
    • Vérifie si le héros a été trouvé
    • Gère les erreurs
    function putHero(req, res) {
      const originalHero = {
        uid: parseInt(req.params.uid, 10),
        name: req.body.name,
        saying: req.body.saying
      };
      Hero.findOne({ uid: originalHero.uid }, (error, hero) => {
        if (checkServerError(res, error)) return;
        if (!checkFound(res, hero)) return;
    
       hero.name = originalHero.name;
        hero.saying = originalHero.saying;
        hero.save(error => {
          if (checkServerError(res, error)) return;
          res.status(200).json(hero);
          console.log('Hero updated successfully!');
        });
      });
    }
    
    function deleteHero(req, res) {
      const uid = parseInt(req.params.uid, 10);
      Hero.findOneAndRemove({ uid: uid })
        .then(hero => {
          if (!checkFound(res, hero)) return;
          res.status(200).json(hero);
          console.log('Hero deleted successfully!');
        })
        .catch(error => {
          if (checkServerError(res, error)) return;
        });
    }
    
    function checkFound(res, hero) {
      if (!hero) {
        res.status(404).send('Hero not found.');
        return;
      }
      return hero;
    }
    
  3. Dans le fichier hero.service.js, exportez les nouveaux modules :

    module.exports = {
      getHeroes,
      postHero,
      putHero,
      deleteHero
    };
    
  4. Nous avons mis à jour le code. À présent, sélectionnez le bouton Redémarrer dans Visual Studio Code.

  5. Actualisez la page de votre navigateur Internet et sélectionnez le bouton Ajouter un nouveau héros. Ajoutez un nouveau héros avec l’ID « 9 », le nom « Starlord », et le message « Salut ». Sélectionnez le bouton Enregistrer pour enregistrer le nouveau héros.

  6. Sélectionnez maintenant le héros Starlord et changez le message « Salut » en « Au revoir », puis sélectionnez le bouton Enregistrer.

    Vous pouvez maintenant sélectionner l’ID dans l’onglet réseau pour afficher la charge utile. Vous pouvez voir dans la charge utile que le message indique maintenant « Au revoir ».

    Application

    Vous pouvez également supprimer un héros dans l’interface utilisateur et voir le temps nécessaire à la suppression. Essayez en sélectionnant le bouton « Supprimer » pour le héros nommé « Fred ».

    Application de héros et onglet Mise en réseau affichant le temps nécessaire pour effectuer les fonctions

    Si vous actualisez la page, l’onglet réseau affiche le temps nécessaire pour obtenir les héros. Les durées sont courtes, mais un grand nombre dépend de l’emplacement de vos données dans le monde et de votre capacité à les répliquer dans une zone géographique proche de vos utilisateurs. Vous trouverez plus d’informations sur la géo-réplication prochainement, dans le didacticiel suivant.

Étapes suivantes

Dans cette partie du didacticiel, vous avez :

  • Ajouté les fonctions Publier, Placer et Supprimer à l’application

Revenez bientôt pour visionner des vidéos supplémentaires de cette série tutorielle.

Vous tentez d’effectuer une planification de la capacité pour une migration vers Azure Cosmos DB ? Vous pouvez utiliser les informations sur votre cluster de bases de données existant pour la planification de la capacité.