Schnellstart: Migrieren einer vorhandenen MongoDB-Node.js-Web-App zu Azure Cosmos DBQuickstart: Migrate an existing MongoDB Node.js web app to Azure Cosmos DB

Dieser Schnellstart veranschaulicht, wie Sie eine vorhandene, in Node.js geschriebene MongoDB-App verwenden und sie mit Ihrer Azure Cosmos-Datenbank verbinden, die den MongoDB-Client unterstützt.This quickstart demonstrates how to use an existing MongoDB app written in Node.js and connect it to your Azure Cosmos database, which supports MongoDB client. Anders ausgedrückt: Für die Anwendung ist es ersichtlich, dass die Daten in einer Cosmos-Datenbank gespeichert sind.In other words, it is transparent to the application that the data is stored in a Cosmos database.

Azure Cosmos DB ist der global verteilte Microsoft-Datenbankdienst mit mehreren Modellen.Azure Cosmos DB is Microsoft’s globally distributed multi-model database service. Sie können schnell Dokument-, Schlüssel-Wert- und Graph-Datenbanken erstellen und abfragen und dabei stets die Vorteile der globalen Verteilung und der horizontalen Skalierung nutzen, die Cosmos DB zugrunde liegen.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.

Wenn Sie fertig sind, wird eine MEAN-Anwendung (MongoDB, Express, Angular und Node.js) in Cosmos DB ausgeführt.When you are done, you will have a MEAN application (MongoDB, Express, Angular, and Node.js) running on Cosmos DB.

In Azure App Service ausgeführte MEAN.js-App

Verwenden von Azure Cloud ShellUse Azure Cloud Shell

Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Starten von Azure Cloud Shell:To start Azure Cloud Shell:

OptionOption Beispiel/LinkExample/Link
Klicken Sie in der rechten oberen Ecke eines Codeblocks auf Ausprobieren.Select Try It in the upper-right corner of a code block. Durch die Auswahl von Ausprobieren wird der Code nicht automatisch in Cloud Shell kopiert.Selecting Try It doesn't automatically copy the code to Cloud Shell. Beispiel für „Testen Sie es.“ für Azure Cloud Shell
Rufen Sie https://shell.azure.com auf, oder wählen Sie die Schaltfläche Cloud Shell starten, um Cloud Shell im Browser zu öffnen.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Starten von Cloud Shell in einem neuen FensterLaunch Cloud Shell in a new window
Wählen Sie im Azure-Portal oben rechts in der Menüleiste die Schaltfläche Cloud Shell.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Cloud Shell-Schaltfläche im Azure-Portal

Ausführen des Codes in diesem Artikel in Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Starten Sie Cloud Shell.Start Cloud Shell.

  2. Wählen Sie die Schaltfläche Kopieren für einen Codeblock, um den Code zu kopieren.Select the Copy button on a code block to copy the code.

  3. Fügen Sie den Code mit STRG+UMSCHALT+V unter Windows und Linux oder Cmd+UMSCHALT+V unter macOS in die Cloud Shell-Sitzung ein.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. Drücken Sie die EINGABETASTE, um den Code auszuführen.Select Enter to run the code.

Wenn Sie die Befehlszeilenschnittstelle lokal installieren und verwenden möchten, müssen Sie für dieses Thema die Azure CLI in Version 2.0 oder höher ausführen.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. Führen Sie az --version aus, um die Version zu finden.Run az --version to find the version. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI.If you need to install or upgrade, see Install Azure CLI.

VoraussetzungenPrerequisites

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

Alternativ können Sie Azure Cosmos DB ohne Azure-Abonnement testen – kostenlos und ohne Verpflichtung.Alternatively, you can Try Azure Cosmos DB for free without an Azure subscription, free of charge and commitments. Oder Sie verwenden für dieses Tutorial den Azure Cosmos DB-Emulator mit der folgenden Verbindungszeichenfolge: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

Zusätzlich zur Azure CLI müssen Sie Node.js und Git lokal installieren, um npm- und git-Befehle auszuführen.In addition to Azure CLI, you need Node.js and Git installed locally to run npm and git commands.

Sie sollten über ausreichende Kenntnisse zu Node.js verfügen.You should have working knowledge of Node.js. Dieser Schnellstart ist nicht dafür vorgesehen, Ihnen bei der Entwicklung von Node.js-Anwendungen im Allgemeinen zu helfen.This quickstart is not intended to help you with developing Node.js applications in general.

Klonen der BeispielanwendungClone the sample application

Führen Sie die folgenden Befehle aus, um das Beispielrepository zu klonen.Run the following commands to clone the sample repository. Dieses Beispielrepository enthält eine MEAN.js-Standardanwendung.This sample repository contains the default MEAN.js application.

  1. Öffnen Sie eine Eingabeaufforderung, erstellen Sie einen neuen Ordner namens „git-samples“, und schließen Sie die Eingabeaufforderung.Open a command prompt, create a new folder named git-samples, then close the command prompt.

    mkdir "C:\git-samples"
    
  2. Öffnen Sie ein Git-Terminalfenster (z.B. git bash), und verwenden Sie den Befehl cd, um in den neuen Ordner zu gelangen und dort die Beispiel-App zu installieren.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. Führen Sie den folgenden Befehl aus, um das Beispielrepository zu klonen.Run the following command to clone the sample repository. Dieser Befehl erstellt eine Kopie der Beispiel-App auf Ihrem Computer.This command creates a copy of the sample app on your computer.

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

Ausführen der AnwendungRun the application

Installieren Sie die erforderlichen Pakete, und starten Sie die Anwendung.Install the required packages and start the application.

cd mean
npm install
npm start

Die Anwendung versucht, eine Verbindung mit einer MongoDB-Quelle herzustellen. Dabei tritt ein Fehler auf. Beenden Sie die Anwendung, wenn die Ausgabe „[MongoError: connect ECONNREFUSED 127.0.0.1:27017]“ zurückgibt.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]".

Anmelden an AzureLog in to Azure

Wenn Sie eine installierte Azure CLI verwenden, melden Sie sich mit dem Befehl az login bei Ihrem Azure-Abonnement an, und befolgen Sie die Anweisungen auf dem Bildschirm.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. Sie können diesen Schritt überspringen, wenn Sie Azure Cloud Shell verwenden.You can skip this step if you're using the Azure Cloud Shell.

az login 

Hinzufügen des Azure Cosmos DB-ModulsAdd the Azure Cosmos DB module

Wenn Sie eine installierte Azure CLI verwenden, überprüfen Sie, ob die cosmosdb-Komponente bereits installiert ist, indem Sie den az-Befehl ausführen.If you are using an installed Azure CLI, check to see if the cosmosdb component is already installed by running the az command. Wenn cosmosdb in der Liste der Basisbefehle enthalten ist, fahren Sie mit dem nächsten Befehl fort.If cosmosdb is in the list of base commands, proceed to the next command. Sie können diesen Schritt überspringen, wenn Sie Azure Cloud Shell verwenden.You can skip this step if you're using the Azure Cloud Shell.

Wenn cosmosdb nicht in der Liste der Basisbefehle enthalten ist, installieren Sie die Azure-Befehlszeilenschnittstelle erneut.If cosmosdb is not in the list of base commands, reinstall Azure CLI.

Erstellen einer RessourcengruppeCreate a resource group

Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe.Create a resource group with the az group create. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen wie Web-Apps, Datenbanken und Speicherkonten bereitgestellt und verwaltet werden.An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed.

Im folgenden Beispiel wird eine Ressourcengruppe in der Region „Europa, Westen“ erstellt.The following example creates a resource group in the West Europe region. Wählen Sie einen eindeutigen Namen für die Ressourcengruppe aus.Choose a unique name for the resource group.

Wenn Sie Azure Cloud Shell verwenden, wählen Sie Ausprobieren aus, befolgen Sie die Anweisungen auf dem Bildschirm für die Anmeldung, und kopieren Sie dann den Befehl in die Eingabeaufforderung.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"

Erstellen eines Azure Cosmos DB-KontosCreate an Azure Cosmos DB account

Erstellen Sie mit dem Befehl az cosmosdb create ein Cosmos-Konto.Create a Cosmos account with the az cosmosdb create command.

Ersetzen Sie im folgenden Befehl den Platzhalter <cosmosdb-name> durch Ihren eigenen eindeutigen Cosmos-Kontonamen.In the following command, please substitute your own unique Cosmos account name where you see the <cosmosdb-name> placeholder. Da dieser eindeutige Name als Teil des Cosmos DB-Endpunkts (https://<cosmosdb-name>.documents.azure.com/) verwendet wird, muss er für alle Cosmos-Konten in Azure eindeutig sein.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

Der --kind MongoDB-Parameter ermöglicht MongoDB-Clientverbindungen.The --kind MongoDB parameter enables MongoDB client connections.

Nach dem Erstellen des Azure Cosmos DB-Kontos zeigt die Azure-CLI ähnliche Informationen wie im folgenden Beispiel an.When the Azure Cosmos DB account is created, the Azure CLI shows information similar to the following example.

Hinweis

In diesem Beispiel wird JSON als Azure CLI-Ausgabeformat (Standardeinstellung) verwendet.This example uses JSON as the Azure CLI output format, which is the default. Informationen zur Verwendung anderer Ausgabeformate finden Sie unter Ausgabeformate für Azure CLI-Befehle.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"
    }
  ]
} 

Verbinden der Node.js-Anwendung mit der DatenbankConnect your Node.js application to the database

In diesem Schritt verbinden Sie die MEAN.js-Beispielanwendung mit der soeben erstellten Cosmos-Datenbank.In this step, you connect your MEAN.js sample application to Cosmos database you just created.

Konfigurieren der Verbindungszeichenfolge in der Node.js-AnwendungConfigure the connection string in your Node.js application

Öffnen Sie in Ihrem MEAN.js.Repository config/env/local-development.js.In your MEAN.js repository, open config/env/local-development.js.

Ersetzen Sie den Inhalt dieser Datei durch den folgenden Code.Replace the content of this file with the following code. Achten Sie auch darauf, dass Sie die beiden <cosmosdb-name>-Platzhalter durch den Namen Ihres Cosmos-Kontos ersetzen.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'
  }
};

Abrufen des SchlüsselsRetrieve the key

Um eine Verbindung mit der Cosmos-Datenbank herstellen zu können, benötigen Sie den Datenbankschlüssel.In order to connect to a Cosmos database, you need the database key. Rufen Sie den Primärschlüssel mit dem Befehl az cosmosdb keys list ab.Use the az cosmosdb keys list command to retrieve the primary key.

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

Die Azure-CLI gibt Informationen ähnlich wie im folgenden Beispiel aus.The Azure CLI outputs information similar to the following example.

"RUayjYjixJDWG5xTqIiXjC..."

Kopieren Sie den Wert von primaryMasterKey.Copy the value of primaryMasterKey. Fügen Sie ihn anstelle von <primary_master_key> in local-development.js ein.Paste this over the <primary_master_key> in local-development.js.

Speichern Sie die Änderungen.Save your changes.

Erneutes Ausführen der AnwendungRun the application again.

Führen Sie npm start erneut aus.Run npm start again.

npm start

Eine Konsolenmeldung sollte Sie darüber informieren, dass die Entwicklungsumgebung ausgeführt wird.A console message should now tell you that the development environment is up and running.

Navigieren Sie in einem Browser zu http://localhost:3000.Go to http://localhost:3000 in a browser. Wählen Sie oben im Menü Sign Up (Registrieren) aus, und versuchen Sie, zwei Dummy-Benutzer zu erstellen.Select Sign Up in the top menu and try to create two dummy users.

Die MEAN.js-Beispielanwendung speichert Benutzerdaten in der Datenbank.The MEAN.js sample application stores user data in the database. Wenn der Vorgang erfolgreich ist und Sie von MEAN.js automatisch mit dem erstellten Benutzer angemeldet werden, funktioniert Ihre Azure Cosmos DB-Verbindung.If you are successful and MEAN.js automatically signs into the created user, then your Azure Cosmos DB connection is working.

Erfolgreiche Verbindung zwischen MEAN.js und MongoDB

Anzeigen von Daten im Daten-ExplorerView data in Data Explorer

In einer Cosmos-Datenbank gespeicherte Daten können im Azure-Portal angezeigt und abgefragt werden.Data stored in a Cosmos database is available to view and query in the Azure portal.

Melden Sie sich im Azure-Portal in Ihrem Webbrowser an, um die im vorherigen Schritt erstellten Benutzerdaten anzuzeigen, abzufragen und mit ihnen zu arbeiten.To view, query, and work with the user data created in the previous step, login to the Azure portal in your web browser.

Geben Sie im Suchfeld oben Azure Cosmos DB ein.In the top Search box, enter Azure Cosmos DB. Wenn sich das Blatt Ihres Cosmos-Kontos öffnet, wählen Sie Ihr Cosmos-Konto aus.When your Cosmos account blade opens, select your Cosmos account. Wählen Sie im linken Navigationsbereich Daten-Explorer aus.In the left navigation, select Data Explorer. Erweitern Sie Ihre Sammlung im Bereich „Sammlungen“. Anschließend können Sie die Dokumente in der Sammlung anzeigen, die Daten abfragen und sogar gespeicherte Prozeduren, Trigger und UDFs erstellen und ausführen.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.

Daten-Explorer im Azure-Portal

Bereitstellen der Node.js-Anwendung in AzureDeploy the Node.js application to Azure

In diesem Schritt stellen Sie die Node.js-Anwendung in Cosmos DB bereit.In this step, you deploy your Node.js application to Cosmos DB.

Sie haben vielleicht festgestellt, dass die Konfigurationsdatei, die Sie zuvor geändert haben, für die Entwicklungsumgebung ist (/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). Wenn Sie die Anwendung in App Service bereitstellen, wird sie standardmäßig in der Produktionsumgebung ausgeführt.When you deploy your application to App Service, it will run in the production environment by default. Nun müssen Sie die gleiche Änderung an der jeweiligen Konfigurationsdatei vornehmen.So now, you need to make the same change to the respective configuration file.

Öffnen Sie in Ihrem MEAN.js.Repository config/env/production.js.In your MEAN.js repository, open config/env/production.js.

Ersetzen Sie im db-Objekt den Wert von uri wie im folgenden Beispiel gezeigt.In the db object, replace the value of uri as show in the following example. Achten Sie darauf, die Platzhalter wie zuvor zu ersetzen.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',

Hinweis

Die Option ssl=true ist wichtig, da SSL für Cosmos DB erforderlich ist.The ssl=true option is important because Cosmos DB requires SSL.

Committen Sie im Terminal alle Änderungen in Git.In the terminal, commit all your changes into Git. Sie können beide Befehle kopieren, um sie gemeinsam auszuführen.You can copy both commands to run them together.

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

Bereinigen von RessourcenClean up resources

Wenn Sie Ihre Web-App und das Azure Cosmos DB-Konto fertiggestellt haben, können Sie die erstellten Azure-Ressourcen löschen, damit keine weiteren Gebühren anfallen.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. So löschen Sie die Ressourcen:To delete the resources:

  1. Wählen Sie ganz links im Azure-Portal Ressourcengruppen aus.In the Azure portal, select Resource groups on the far left. Wenn das linke Menü reduziert ist, wählen Sie die Schaltfläche Erweitern aus, um es zu erweitern.If the left menu is collapsed, select Expand button to expand it.

  2. Wählen Sie die Ressourcengruppe aus, die Sie für diesen Schnellstart erstellt haben.Select the resource group you created for this quickstart.

    Auswählen der zu löschenden Ressourcengruppe

  3. Wählen Sie im neuen Fenster Ressourcengruppe löschen aus.In the new window, select Delete resource group.

    Löschen der Ressourcengruppe

  4. Geben Sie in dem nächsten Fenster den Namen der zu löschenden Ressourcengruppe ein, und wählen Sie dann Löschen aus.In the next window, enter the name of the resource group to delete, and then select Delete.

Nächste SchritteNext steps

In dieser Schnellstartanleitung haben Sie gelernt, wie Sie ein Cosmos-Konto erstellen, eine Sammlung erstellen und eine Konsolen-App ausführen.In this quickstart, you've learned how to create a Cosmos account, create a collection and run a console app. Jetzt können Sie zusätzliche Daten in Ihre Cosmos-Datenbank importieren.You can now import additional data to your Cosmos database.