Azure Cosmos DB: Eseguire la migrazione di un'app Web MongoDB Node.js esistenteAzure Cosmos DB: Migrate an existing Node.js MongoDB web app

Azure Cosmos DB è il servizio di database multimodello distribuito a livello globale di Microsoft.Azure Cosmos DB is Microsoft’s globally distributed multi-model database service. È possibile creare ed eseguire rapidamente query su database di documenti, coppie chiave/valore e grafi, sfruttando in ognuno dei casi i vantaggi offerti dalle funzionalità di scalabilità orizzontale e distribuzione globale alla base di Azure 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 Azure Cosmos DB.

Questa guida di avvio rapido illustra come usare un'app MongoDB esistente scritta in Node.js e connetterla al database Azure Cosmos DB, che supporta le connessioni client MongoDB.This quickstart demonstrates how to use an existing MongoDB app written in Node.js and connect it to your Azure Cosmos DB database, which supports MongoDB client connections. In altre parole, l'applicazione Node.js sa solo che si sta connettendo a un database usando le API MongoDB.In other words, your Node.js application only knows that it's connecting to a database using MongoDB APIs. Il fatto che i dati siano archiviati in Azure Cosmos DB è trasparente per l'applicazione.It is transparent to the application that the data is stored in Azure Cosmos DB.

Al termine, si avrà un'applicazione MEAN (MongoDB, Express, Angular e Node.js) in esecuzione in Azure Cosmos DB.When you are done, you will have a MEAN application (MongoDB, Express, Angular, and Node.js) running on Azure Cosmos DB.

App MEAN.js in esecuzione nel Servizio app di Azure

Avviare Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo.The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.It has common Azure tools preinstalled and configured to use with your account. È sufficiente fare clic su Copia per copiare il codice, incollarlo in Cloud Shell e quindi premere INVIO per eseguirlo.Just click the Copy to copy the code, paste it into the Cloud Shell, and then press enter to run it. Esistono due modi per avviare Cloud Shell:There are two ways to launch the Cloud Shell:

Fare clic su Prova nell'angolo superiore destro di un blocco di codice.Click Try It in the upper right corner of a code block. Cloud Shell in questo articolo
Fare clic sul pulsante Cloud Shell nel menu in alto a destra nel portale di Azure.Click the Cloud Shell button on the menu in the upper right of the Azure portal. Cloud Shell nel portale

Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, per questo argomento è necessario eseguire la versione 2.0 o successiva dell'interfaccia della riga di comando di Azure.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. Eseguire az --version per trovare la versione.Run az --version to find the version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure 2.0.If you need to install or upgrade, see Install Azure CLI 2.0.

PrerequisitiPrerequisites

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

In alternativa, è possibile provare gratuitamente Microsoft Azure Cosmos DB senza una sottoscrizione di Azure e senza impegnoAlternatively, you can Try Azure Cosmos DB for free without an Azure subscription, free of charge and commitments. oppure usare l'emulatore Azure Cosmos DB per questa esercitazione, con una stringa di connession diOr 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

Oltre all'interfaccia della riga di comando di Azure, è necessario che Node.js e Git siano installati localmente per eseguire i comandi npm e git.In addition to Azure CLI, you need Node.js and Git installed locally to run npm and git commands.

È necessario saper usare Node.js.You should have working knowledge of Node.js. Questa guida di avvio rapido non ha lo scopo di offrire informazioni generali sullo sviluppo di applicazioni Node.js.This quickstart is not intended to help you with developing Node.js applications in general.

Clonare l'applicazione di esempioClone the sample application

Aprire una finestra del terminale Git, ad esempio Git Bash, ed eseguire il comando cd per passare a una directory di lavoro.Open a git terminal window, such as git bash, and cd to a working directory.

Eseguire i comandi seguenti per clonare il repository di esempio.Run the following commands to clone the sample repository. Questo archivio di esempio contiene l'applicazione MEAN.js predefinita.This sample repository contains the default MEAN.js application.

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

Eseguire l'applicazioneRun the application

Installare i pacchetti necessari e avviare l'applicazione.Install the required packages and start the application.

cd mean
npm install
npm start

L'applicazione tenterà di connettersi a un'origine MongoDB e non riuscirà. Continuare e uscire dall'applicazione quando l'output restituisce "[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]".

Accedere ad AzureLog in to Azure

Se si usa un'interfaccia della riga di comando di Azure installata, accedere alla sottoscrizione di Azure con il comando az login e seguire le istruzioni visualizzate.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. Se si usa Azure Cloud Shell, è possibile ignorare questo passaggio.You can skip this step if you're using the Azure Cloud Shell.

az login 

Aggiungere il modulo Azure Cosmos DBAdd the Azure Cosmos DB module

Se si usa un'interfaccia della riga di comando di Azure installata, verificare se il componente cosmosdb è già installato eseguendo il comando az.If you are using an installed Azure CLI, check to see if the cosmosdb component is already installed by running the az command. Se cosmosdb è nell'elenco di comandi di base, passare al comando successivo.If cosmosdb is in the list of base commands, proceed to the next command. Se si usa Azure Cloud Shell, è possibile ignorare questo passaggio.You can skip this step if you're using the Azure Cloud Shell.

Se cosmosdb non è nell'elenco dei comandi di base, reinstallare l'interfaccia della riga di comando di Azure 2.0.If cosmosdb is not in the list of base commands, reinstall Azure CLI 2.0.

Creare un gruppo di risorseCreate a resource group

Creare un gruppo di risorse con il comando az group create.Create a resource group with the az group create. Un gruppo di risorse di Azure è un contenitore logico in cui vengono distribuite e gestite risorse di Azure come app Web, database e account di archiviazione.An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed.

L'esempio seguente crea un gruppo di risorse nell'area Europa occidentale.The following example creates a resource group in the West Europe region. Scegliere un nome univoco per il gruppo di risorse.Choose a unique name for the resource group.

Se si usa Azure Cloud Shell, fare clic su Prova, seguire le istruzioni visualizzate per eseguire l'accesso e quindi copiare il comando al prompt dei comandi.If you are using Azure Cloud Shell, click Try It, follow the onscreen prompts to login, then copy the command into the command prompt.

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

Creare un account Azure Cosmos DBCreate an Azure Cosmos DB account

Creare un account Azure Cosmos DB con il comando az cosmosdb create.Create an Azure Cosmos DB account with the az cosmosdb create command.

Nel comando seguente sostituire il segnaposto <cosmosdb-name> con il nome univoco dell'account Azure Cosmos DB.In the following command, please substitute your own unique Azure Cosmos DB account name where you see the <cosmosdb-name> placeholder. Questo nome univoco verrà usato come parte dell'endpoint di Azure Cosmos DB, https://<cosmosdb-name>.documents.azure.com/, pertanto deve essere univoco rispetto a tutti gli account Azure Cosmos DB presenti in Azure.This unique name will be used as part of your Azure Cosmos DB endpoint (https://<cosmosdb-name>.documents.azure.com/), so the name needs to be unique across all Azure Cosmos DB accounts in Azure.

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

Il parametro --kind MongoDB consente le connessioni al client MongoDB.The --kind MongoDB parameter enables MongoDB client connections.

Dopo la creazione dell'account Azure Cosmos DB, l'interfaccia della riga di comando di Azure mostra informazioni simili all'esempio seguente.When the Azure Cosmos DB account is created, the Azure CLI shows information similar to the following example.

Nota

Questo esempio usa JSON come formato di output dell'interfaccia della riga di comando di Azure, ovvero l'impostazione predefinita.This example uses JSON as the Azure CLI output format, which is the default. Per usare un altro formato di output, vedere Formati di output per i comandi dell'interfaccia della riga di comando di Azure 2.0.To use another output format, see Output formats for Azure CLI 2.0 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"
    }
  ]
} 

Connettere l'applicazione Node.js al databaseConnect your Node.js application to the database

In questo passaggio si usa una stringa di connessione MongoDB per connettere l'applicazione di esempio MEAN.js a un database Azure Cosmos DB appena creato.In this step, you connect your MEAN.js sample application to an Azure Cosmos DB database you just created, using a MongoDB connection string.

Configurare la stringa di connessione nell'applicazione Node.jsConfigure the connection string in your Node.js application

Nel repository di MEAN.js aprire config/env/local-development.js.In your MEAN.js repository, open config/env/local-development.js.

Sostituire il contenuto del file con il codice seguente.Replace the content of this file with the following code. Assicurarsi di sostituire anche i due segnaposto <cosmosdb-name> con il nome dell'account Azure Cosmos DB.Be sure to also replace the two <cosmosdb-name> placeholders with your Azure Cosmos DB 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'
  }
};

Recuperare la chiaveRetrieve the key

Per connettersi a un database Azure Cosmos DB, è necessaria la chiave del database.In order to connect to an Azure Cosmos DB database, you need the database key. Usare il comando az cosmosdb list-keys per recuperare la chiave primaria.Use the az cosmosdb list-keys command to retrieve the primary key.

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

L'interfaccia della riga di comando di Azure restituisce informazioni simili all'esempio seguente.The Azure CLI outputs information similar to the following example.

"RUayjYjixJDWG5xTqIiXjC..."

Copiare il valore di primaryMasterKey.Copy the value of primaryMasterKey. Incollarlo tramite <primary_master_key> in local-development.js.Paste this over the <primary_master_key> in local-development.js.

Salvare le modifiche.Save your changes.

Eseguire di nuovo l'applicazione.Run the application again.

Eseguire di nuovo npm start.Run npm start again.

npm start

Un messaggio della console dovrebbe ora indicare che l'ambiente di sviluppo è operativo.A console message should now tell you that the development environment is up and running.

Andare a http://localhost:3000 in un browser.Navigate to http://localhost:3000 in a browser. Fare clic su Iscrizione nel menu in alto e provare a creare due utenti fittizi.Click Sign Up in the top menu and try to create two dummy users.

L'applicazione di esempio MEAN.js archivia i dati utente nel database.The MEAN.js sample application stores user data in the database. Se l'operazione ha esito positivo e l'applicazione MEAN.js accede automaticamente all'utente creato, la connessione ad Azure Cosmos DB funziona.If you are successful and MEAN.js automatically signs into the created user, then your Azure Cosmos DB connection is working.

MEAN.js si connette correttamente a MongoDB

Visualizzare i dati in Esplora datiView data in Data Explorer

I dati archiviati da Azure Cosmos DB sono disponibili per la visualizzazione, l'esecuzione di query e l'esecuzione di logica di business nel portale di Azure.Data stored by an Azure Cosmos DB is available to view, query, and run business-logic on in the Azure portal.

Per visualizzare e usare i dati utente creati nel passaggio precedente, nonché eseguire query su di essi, accedere al portale di Azure nel Web browser.To view, query, and work with the user data created in the previous step, login to the Azure portal in your web browser.

Nella casella di ricerca nella parte superiore digitare Azure Cosmos DB.In the top Search box, type Azure Cosmos DB. Quando il pannello dell'account Cosmos DB si apre, selezionare l'account Cosmos DB.When your Cosmos DB account blade opens, select your Cosmos DB account. Nel riquadro di spostamento a sinistra fare clic su Esplora dati.In the left navigation, click Data Explorer. Espandere la raccolta nel riquadro Raccolte. Sarà quindi possibile visualizzare i documenti nella raccolta, eseguire query sui dati e anche creare ed eseguire stored procedure, trigger e funzioni definite dall'utente.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.

Esplora dati nel portale di Azure

Distribuire l'applicazione Node.js in AzureDeploy the Node.js application to Azure

In questo passaggio si distribuisce l'applicazione Node.js connessa a MongoDB in Azure Cosmos DB.In this step, you deploy your MongoDB-connected Node.js application to Azure Cosmos DB.

Si sarà probabilmente notato che il file di configurazione modificato in precedenza è per l'ambiente di sviluppo (/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). Quando si distribuisce l'applicazione nel servizio app, per impostazione predefinita viene eseguita nell'ambiente di produzione.When you deploy your application to App Service, it will run in the production environment by default. A questo punto, è quindi necessario apportare la stessa modifica al file di configurazione corrispondente.So now, you need to make the same change to the respective configuration file.

Nel repository di MEAN.js aprire config/env/production.js.In your MEAN.js repository, open config/env/production.js.

Nell'oggetto db sostituire il valore di uri come mostrato nell'esempio seguente.In the db object, replace the value of uri as show in the following example. Assicurarsi di sostituire i segnaposto come fatto in precedenza.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',

Nota

L'opzione ssl=true è importante perché Azure Cosmos DB richiede l'uso di SSL.The ssl=true option is important because Azure Cosmos DB requires SSL.

Nel terminale eseguire il commit tutte le modifiche in Git.In the terminal, commit all your changes into Git. È possibile copiare entrambi i comandi per eseguirli insieme.You can copy both commands to run them together.

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

Pulire le risorseClean up resources

Se non si intende continuare a usare l'app, eliminare tutte le risorse create tramite questa guida di avvio rapido nel portale di Azure eseguendo questi passaggi:If you're not going to continue to use this app, delete all resources created by this quickstart in the Azure portal with the following steps:

  1. Scegliere Gruppi di risorse dal menu a sinistra del portale di Azure e quindi fare clic sul nome della risorsa creata.From the left-hand menu in the Azure portal, click Resource groups and then click the name of the resource you created.
  2. Nella pagina del gruppo di risorse fare clic su Elimina, digitare il nome della risorsa da eliminare nella casella di testo e quindi fare clic su Elimina.On your resource group page, click Delete, type the name of the resource to delete in the text box, and then click Delete.

Passaggi successiviNext steps

In questa guida di avvio rapido si è appreso come creare un account Azure Cosmos DB e come creare una raccolta MongoDB tramite Esplora dati.In this quickstart, you've learned how to create an Azure Cosmos DB account and create a MongoDB collection using the Data Explorer. È ora possibile eseguire la migrazione dei dati di MongoDB in Azure Cosmos DB.You can now migrate your MongoDB data to Azure Cosmos DB.