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

Azure Cosmos DB est le service de base de données multi-modèle de Microsoft distribué à l’échelle mondiale.Azure Cosmos DB is Microsoft’s globally distributed multi-model database service. Rapidement, vous avez la possibilité de créer et d’interroger des documents, des paires clé/valeur et des bases de données orientées graphe, profitant tous de la distribution à l’échelle mondiale et des capacités de mise à l’échelle horizontale au cœur de Cosmos DB.You can quickly create and query document, key/value, and graph databases, all of which benefit from the global distribution and horizontal scale capabilities at the core of Cosmos DB.

Ce démarrage rapide montre comment utiliser une application MongoDB existante écrite en Node.js et comment la connecter à votre base de données Cosmos prenant en charge le client MongoDB.This quickstart demonstrates how to use an existing MongoDB app written in Node.js and connect it to your Cosmos database, which supports MongoDB client. En d’autres termes, l’application sait que les données sont stockées dans la base de données Cosmos.In other words, it is transparent to the application that the data is stored in a Cosmos database.

Une fois que vous avez terminé, vous obtenez une application MEAN (MongoDB, Express, Angular et Node.js) exécutée dans Cosmos DB.When you are done, you will have a MEAN application (MongoDB, Express, Angular, and Node.js) running on Cosmos DB.

Application MEAN.js exécutée dans Azure App Service

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. Cloud Shell vous permet d’utiliser bash ou PowerShell pour travailler avec les services Azure.Cloud Shell lets you use either bash or PowerShell 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 pre-installed commands to run the code in this article without having to install anything on your local environment.

Pour lancer Azure Cloud Shell :To launch 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 top-right menu bar 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. Lancez Cloud Shell.Launch 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 avec Ctrl+Maj+V sur Windows et Linux, ou Cmd+ Maj+V sur macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Appuyez sur Entrée pour exécuter le code.Press Enter to run the code.

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 installer ou mettre à niveau, voir Installer Azure CLI.If you need to install or upgrade, see Install Azure CLI.

PrérequisPrerequisites

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don't have an Azure subscription, create a free account before you begin.

Vous pouvez également essayer Azure Cosmos DB gratuitement sans abonnement Azure, libre de tout frais et engagement.Alternatively, you can Try Azure Cosmos DB for free without an Azure subscription, free of charge and commitments. Vous pouvez aussi utiliser l’émulateur Azure Cosmos DB pour ce didacticiel avec la chaîne de connexion suivante :Or you can use the Azure Cosmos DB Emulator for this tutorial with a connection string of

mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true

En plus d’Azure CLI, vous devez avoir installé Node.js et Git localement pour exécuter les commandes npm et git.In addition to Azure CLI, you need Node.js and Git installed locally to run npm and git commands.

Vous devriez avoir une bonne connaissance de Node.js.You should have working knowledge of Node.js. Ce démarrage rapide n’est pas destiné à vous aider à développer des applications Node.js en général.This quickstart is not intended to help you with developing Node.js applications in general.

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.

    md "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

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 à AzureLog in to Azure

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, log 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 à la base de données Cosmos que vous venez de créer.In this step, you connect your MEAN.js sample application to Cosmos database 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 documentdb list-keys pour récupérer la clé primaire.Use the az cosmosdb list-keys command to retrieve the primary key.

az cosmosdb list-keys --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.

Explorateur de données dans le portail Azure

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, car Cosmos DB nécessite SSL.The ssl=true option is important because Cosmos DB requires SSL.

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"

Supprimer des ressourcesClean up resources

Quand vous en avez terminé avec votre application web 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 web 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. Dans le portail Azure, sélectionnez Groupes de ressources tout à gauche.In the Azure portal, select Resource groups on the far left. Si le menu de gauche est réduit, sélectionnez le bouton Développer pour le développer.If the left menu is collapsed, select Expand button to expand it.

  2. Sélectionnez le groupe de ressources créé dans ce guide de démarrage rapide.Select the resource group you created for this quickstart.

    Sélectionner le groupe de ressources à supprimer

  3. Dans la nouvelle fenêtre, sélectionnez Supprimer le groupe de ressources.In the new window, 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 Cosmos, à créer une collection et à exécuter une application console.In this quickstart, you've learned how to create a Cosmos account, create a collection and run a console app. Vous pouvez maintenant importer des données supplémentaires dans votre base de données Cosmos.You can now import additional data to your Cosmos database.