Démarrage rapide : Migrer une application web Node.js MongoDB existante vers Azure Cosmos DBQuickstart: Migrate an existing MongoDB Node.js web app to Azure Cosmos DB

Dans ce guide de démarrage rapide, vous allez créer et gérer un compte d’API Azure Cosmos DB pour Mongo DB à l’aide d’Azure Cloud Shell et avec une application MEAN (MongoDB, Express, Angular et Node.js) clonée à partir de GitHub.In this quickstart, you create and manage an Azure Cosmos DB for Mongo DB API account by using the Azure Cloud Shell, and with a MEAN (MongoDB, Express, Angular, and Node.js) app cloned from GitHub. Azure Cosmos DB est un service de base de données multimodèle qui vous permet de créer et d’interroger rapidement des bases de données de documents, de tables, de paires clé/valeur et de graphes avec des capacités de distribution mondiale et de mise à l’échelle horizontale.Azure Cosmos DB is a multi-model database service that lets you quickly create and query document, table, key-value, and graph databases with global distribution and horizontal scale capabilities.

PrérequisPrerequisites

Utiliser Azure Cloud ShellUse Azure Cloud Shell

Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Pour démarrer Azure Cloud Shell :To start Azure Cloud Shell:

OptionOption Exemple/LienExample/Link
Sélectionnez Essayer dans le coin supérieur droit d’un bloc de code.Select Try It in the upper-right corner of a code block. La sélection de Essayer ne copie pas automatiquement le code dans Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemple Essayer pour Azure Cloud Shell
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Lancer Cloud Shell dans une nouvelle fenêtreLaunch Cloud Shell in a new window
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Bouton Cloud Shell du portail Azure

Pour exécuter le code de cet article dans Azure Cloud Shell :To run the code in this article in Azure Cloud Shell:

  1. Démarrez Cloud Shell.Start Cloud Shell.

  2. Sélectionnez le bouton Copier dans un bloc de code pour copier le code.Select the Copy button on a code block to copy the code.

  3. Collez le code dans la session Cloud Shell en sélectionnant Ctrl+Maj+V sur Windows et Linux, ou en sélectionnant Cmd+Maj+V sur macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Sélectionnez Entrée pour exécuter le code.Select Enter to run the code.

Clonage de l’exemple d’applicationClone the sample application

Exécutez les commandes suivantes pour cloner l’exemple de référentiel.Run the following commands to clone the sample repository. Cet exemple de référentiel contient l’application MEAN.js par défaut.This sample repository contains the default MEAN.js application.

  1. Ouvrez une invite de commandes, créez un nouveau dossier nommé git-samples, puis fermez l’invite de commandes.Open a command prompt, create a new folder named git-samples, then close the command prompt.

    mkdir "C:\git-samples"
    
  2. Ouvrez une fenêtre de terminal git comme Git Bash et utilisez la commande cd pour accéder au nouveau dossier d’installation pour l’exemple d’application.Open a git terminal window, such as git bash, and use the cd command to change to the new folder to install the sample app.

    cd "C:\git-samples"
    
  3. Exécutez la commande suivante pour cloner l’exemple de référentiel :Run the following command to clone the sample repository. Cette commande crée une copie de l’exemple d’application sur votre ordinateur.This command creates a copy of the sample app on your computer.

    git clone https://github.com/prashanthmadi/mean
    

Exécution de l'applicationRun the application

Cette application MongoDB écrite en Node.js se connecte à votre base de données Azure Cosmos DB, qui prend en charge le client MongoDB.This MongoDB app written in Node.js connects to your Azure Cosmos DB database, which supports MongoDB client. En d’autres termes, l’application sait que les données sont stockées dans une base de données Azure Cosmos DB.In other words, it is transparent to the application that the data is stored in an Azure Cosmos DB database.

Installez les packages requis et démarrez l’application.Install the required packages and start the application.

cd mean
npm install
npm start

L’application tente de se connecter à une source MongoDB et échoue. Continuez et quittez l’application lorsque la sortie renvoie le message « [MongoError: connect ECONNREFUSED 127.0.0.1:27017] ».The application will try to connect to a MongoDB source and fail, go ahead and exit the application when the output returns "[MongoError: connect ECONNREFUSED 127.0.0.1:27017]".

Connexion à AzureSign in to Azure

Si vous choisissez d’installer et d’utiliser l’interface de ligne de commande localement, vous devez exécuter Azure CLI version 2.0 ou une version ultérieure pour poursuivre la procédure décrite dans cet article.If you choose to install and use the CLI locally, this topic requires that you are running the Azure CLI version 2.0 or later. Exécutez az --version pour trouver la version.Run az --version to find the version. Si vous devez effectuer une installation ou une mise à niveau, consultez [Installer Azure CLI].If you need to install or upgrade, see [Install Azure CLI].

Si vous utilisez une interface de ligne de commande Azure installée, connectez-vous à votre abonnement Azure avec la commande az login et suivez les instructions à l’écran.If you are using an installed Azure CLI, sign in to your Azure subscription with the az login command and follow the on-screen directions. Vous pouvez ignorer cette étape si vous utilisez Azure Cloud Shell.You can skip this step if you're using the Azure Cloud Shell.

az login 

Ajouter le module Azure Cosmos DBAdd the Azure Cosmos DB module

Si vous utilisez une interface de ligne de commande Azure installée, vérifiez si le composant cosmosdb est déjà installé en exécutant la commande az.If you are using an installed Azure CLI, check to see if the cosmosdb component is already installed by running the az command. Si cosmosdb figure dans la liste des commandes de base, passez à la commande suivante.If cosmosdb is in the list of base commands, proceed to the next command. Vous pouvez ignorer cette étape si vous utilisez Azure Cloud Shell.You can skip this step if you're using the Azure Cloud Shell.

Si cosmosdb n’est pas dans la liste des commandes de base, réinstallez Azure CLI.If cosmosdb is not in the list of base commands, reinstall Azure CLI.

Créer un groupe de ressourcesCreate a resource group

Créez un groupe de ressources avec la commande az group create.Create a resource group with the az group create. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure comme les applications web, les bases de données et les comptes de stockage sont déployées et gérées.An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed.

L’exemple suivant crée un groupe de ressources dans la région Europe Ouest.The following example creates a resource group in the West Europe region. Choisissez un nom unique pour le groupe de ressources.Choose a unique name for the resource group.

Si vous utilisez Azure Cloud Shell, sélectionnez Essayer, suivez les invites à l’écran pour vous connecter, puis copiez la commande dans l’invite de commandes.If you are using Azure Cloud Shell, select Try It, follow the onscreen prompts to login, then copy the command into the command prompt.

az group create --name myResourceGroup --location "West Europe"

Création d’un compte Azure Cosmos DBCreate an Azure Cosmos DB account

Créez un compte Cosmos à l’aide de la commande az cosmosdb create.Create a Cosmos account with the az cosmosdb create command.

Dans la commande suivante, indiquez le nom unique de votre compte Cosmos là où se trouve l’espace réservé <cosmosdb-name>.In the following command, please substitute your own unique Cosmos account name where you see the <cosmosdb-name> placeholder. Ce nom unique sera utilisé en tant que point de terminaison Cosmos DB (https://<cosmosdb-name>.documents.azure.com/). Pour cette raison, le nom doit être unique sur l’ensemble des comptes Cosmos dans Azure.This unique name will be used as part of your Cosmos DB endpoint (https://<cosmosdb-name>.documents.azure.com/), so the name needs to be unique across all Cosmos accounts in Azure.

az cosmosdb create --name <cosmosdb-name> --resource-group myResourceGroup --kind MongoDB

Le paramètre --kind MongoDB prend en charge les connexions clientes MongoDB.The --kind MongoDB parameter enables MongoDB client connections.

Une fois le compte Azure Cosmos DB créé, Azure CLI affiche des informations similaires à celles de l’exemple suivant.When the Azure Cosmos DB account is created, the Azure CLI shows information similar to the following example.

Notes

Cet exemple utilise JSON comme format de sortie de l’interface de ligne de commande Azure, qui constitue le format par défaut.This example uses JSON as the Azure CLI output format, which is the default. Pour utiliser un autre format de sortie, consultez Formats de sortie pour les commandes Azure CLI.To use another output format, see Output formats for Azure CLI commands.

{
  "databaseAccountOfferType": "Standard",
  "documentEndpoint": "https://<cosmosdb-name>.documents.azure.com:443/",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Document
DB/databaseAccounts/<cosmosdb-name>",
  "kind": "MongoDB",
  "location": "West Europe",
  "name": "<cosmosdb-name>",
  "readLocations": [
    {
      "documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
      "failoverPriority": 0,
      "id": "<cosmosdb-name>-westeurope",
      "locationName": "West Europe",
      "provisioningState": "Succeeded"
    }
  ],
  "resourceGroup": "myResourceGroup",
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "writeLocations": [
    {
      "documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
      "failoverPriority": 0,
      "id": "<cosmosdb-name>-westeurope",
      "locationName": "West Europe",
      "provisioningState": "Succeeded"
    }
  ]
} 

Connecter votre application Node.js à la base de donnéesConnect your Node.js application to the database

Pendant cette étape, vous connectez votre exemple d’application MEAN.js au compte de base de données Azure Cosmos DB que vous venez de créer.In this step, you connect your MEAN.js sample application to the Azure Cosmos DB database account you just created.

Configurer la chaîne de connexion dans votre application Node.jsConfigure the connection string in your Node.js application

Dans votre référentiel MEAN.js, ouvrez config/env/local-development.js.In your MEAN.js repository, open config/env/local-development.js.

Remplacez le contenu de ce fichier par le code suivant.Replace the content of this file with the following code. Veillez également à remplacer les deux espaces réservés <cosmosdb-name> par le nom de votre compte Cosmos.Be sure to also replace the two <cosmosdb-name> placeholders with your Cosmos account name.

'use strict';

module.exports = {
  db: {
    uri: 'mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb-name>.documents.azure.com:10255/mean-dev?ssl=true&sslverifycertificate=false'
  }
};

Récupérer la cléRetrieve the key

Pour vous connecter à une base de données Cosmos, vous avez besoin de la clé de la base de données.In order to connect to a Cosmos database, you need the database key. Utilisez la commande az cosmosdb keys list pour récupérer la clé primaire.Use the az cosmosdb keys list command to retrieve the primary key.

az cosmosdb keys list --name <cosmosdb-name> --resource-group myResourceGroup --query "primaryMasterKey"

Azure CLI génère des informations semblables à ce qui suit.The Azure CLI outputs information similar to the following example.

"RUayjYjixJDWG5xTqIiXjC..."

Copiez la valeur de primaryMasterKey.Copy the value of primaryMasterKey. Collez celle-ci sur <primary_master_key> dans local-development.js.Paste this over the <primary_master_key> in local-development.js.

Enregistrez vos modifications.Save your changes.

Exécutez de nouveau l'application.Run the application again.

Exécutez de nouveau npm start.Run npm start again.

npm start

Un message de console doit maintenant vous indiquer que l’environnement de développement est fonctionnel et en cours d’exécution.A console message should now tell you that the development environment is up and running.

Dans un navigateur, accédez à http://localhost:3000.Go to http://localhost:3000 in a browser. Sélectionnez S’inscrire dans le menu supérieur et essayez de créer deux utilisateurs fictifs.Select Sign Up in the top menu and try to create two dummy users.

L’exemple d’application MEAN.js stocke les données utilisateur dans la base de données.The MEAN.js sample application stores user data in the database. Si vous réussissez et si MEAN.js se connecte automatiquement à l’utilisateur créé, cela signifie que votre connexion à Azure Cosmos DB fonctionne.If you are successful and MEAN.js automatically signs into the created user, then your Azure Cosmos DB connection is working.

MEAN.js se connecte correctement à MongoDB

Afficher les données dans l’Explorateur de donnéesView data in Data Explorer

Les données stockées dans une base de données Cosmos peuvent être affichées et interrogées dans le Portail Azure.Data stored in a Cosmos database is available to view and query in the Azure portal.

Pour afficher, interroger et manipuler les données utilisateur créées à l’étape précédente, connectez-vous au portail Azure dans votre navigateur web.To view, query, and work with the user data created in the previous step, login to the Azure portal in your web browser.

Dans la zone de recherche en haut de la page, entrez Azure Cosmos DB.In the top Search box, enter Azure Cosmos DB. Lorsque le panneau de votre compte Cosmos s’ouvre, sélectionnez votre compte Cosmos.When your Cosmos account blade opens, select your Cosmos account. Dans le volet de navigation gauche, sélectionnez Explorateur de données.In the left navigation, select Data Explorer. Développez votre collection dans le volet Collections, pour pouvoir afficher les documents de la collection, interroger les données et même créer et exécuter des procédures stockées, des déclencheurs et des fonctions définies par l’utilisateur.Expand your collection in the Collections pane, and then you can view the documents in the collection, query the data, and even create and run stored procedures, triggers, and UDFs.

MEAN.js se connecte correctement à MongoDB

Déployer l’application Node.js dans AzureDeploy the Node.js application to Azure

Dans cette étape, vous allez déployer votre application Node.js dans Cosmos DB.In this step, you deploy your Node.js application to Cosmos DB.

Vous avez peut-être remarqué que le fichier de configuration que vous avez modifié précédemment est destiné à l’environnement de développement (/config/env/local-development.js).You may have noticed that the configuration file that you changed earlier is for the development environment (/config/env/local-development.js). Lorsque vous déployez votre application dans App Service, elle s’exécute dans l’environnement de production par défaut.When you deploy your application to App Service, it will run in the production environment by default. Maintenant, vous devez apporter la même modification au fichier de configuration correspondant.So now, you need to make the same change to the respective configuration file.

Dans votre référentiel MEAN.js, ouvrez config/env/production.js.In your MEAN.js repository, open config/env/production.js.

Dans l’objet db, remplacez la valeur de uri comme indiqué dans l’exemple suivant.In the db object, replace the value of uri as show in the following example. Veillez à remplacer les espaces réservés comme précédemment.Be sure to replace the placeholders as before.

'mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb-name>.documents.azure.com:10255/mean?ssl=true&sslverifycertificate=false',

Notes

L’option ssl=true est importante, en raison des exigences de Cosmos DB.The ssl=true option is important because of Cosmos DB requirements. Pour plus d’informations, consultez Exigences relatives à la chaîne de connexion.For more information, see Connection string requirements.

Dans le terminal, validez toutes vos modifications dans Git.In the terminal, commit all your changes into Git. Vous pouvez copier les deux commandes pour les exécuter ensemble.You can copy both commands to run them together.

git add .
git commit -m "configured MongoDB connection string"

Nettoyer les ressourcesClean up resources

Quand vous en avez terminé avec votre application et votre compte Azure Cosmos DB, vous pouvez supprimer les ressources Azure que vous avez créées afin d’éviter des frais supplémentaires.When you're done with your app and Azure Cosmos DB account, you can delete the Azure resources you created so you don't incur more charges. Pour supprimer les ressources :To delete the resources:

  1. Depuis la barre de recherche du portail Azure, recherchez et sélectionnez Groupes de ressources.In the Azure portal Search bar, search for and select Resource groups.

  2. Dans la liste, sélectionnez le groupe de ressources créé pour ce guide de démarrage rapide.From the list, select the resource group you created for this quickstart.

    Sélectionner le groupe de ressources à supprimer

  3. Dans la page Vue d’ensemble du groupe de ressources, sélectionnez Supprimer un groupe de ressources.On the resource group Overview page, select Delete resource group.

    Supprimer le groupe de ressources

  4. Dans la fenêtre suivante, entrez le nom du groupe de ressources à supprimer, puis sélectionnez Supprimer.In the next window, enter the name of the resource group to delete, and then select Delete.

Étapes suivantesNext steps

Dans ce guide de démarrage rapide, vous avez appris à créer un compte d’API Azure Cosmos DB MongoDB à l’aide d’Azure Cloud Shell et à créer et exécuter une application MEAN.js pour ajouter des utilisateurs au compte.In this quickstart, you learned how to create an Azure Cosmos DB MongoDB API account using the Azure Cloud Shell, and create and run a MEAN.js app to add users to the account. Vous pouvez maintenant importer des données supplémentaires dans votre compte Azure Cosmos DB.You can now import additional data to your Azure Cosmos DB account.