Inicio rápido: Migración de una aplicación web actual Node.js de MongoDB a Azure Cosmos DBQuickstart: Migrate an existing MongoDB Node.js web app to Azure Cosmos DB

En este inicio rápido, se crea y administra una cuenta de Azure Cosmos DB para MongoDB API mediante Azure Cloud Shell, y con una aplicación MEAN (MongoDB, Express, Angular y Node.js) clonada desde 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 es un servicio de base de datos multimodelo que permite crear y consultar rápidamente bases de datos de documentos, tablas, claves-valores y grafos con funcionalidades de distribución global y escala horizontal.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.

Requisitos previosPrerequisites

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno 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.

Para iniciar Azure Cloud Shell:To start Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Pruébelo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Start Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en 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. Seleccione Entrar para ejecutar el código.Select Enter to run the code.

Clonación de la aplicación de ejemploClone the sample application

Ejecute los comandos siguientes para clonar el repositorio de ejemplo.Run the following commands to clone the sample repository. Este repositorio de ejemplo contiene una aplicación MEAN.js predeterminada.This sample repository contains the default MEAN.js application.

  1. Abra un símbolo del sistema, cree una carpeta nueva denominada ejemplos de GIT y, después, cierre el símbolo del sistema.Open a command prompt, create a new folder named git-samples, then close the command prompt.

    mkdir "C:\git-samples"
    
  2. Abra una ventana de terminal de Git, como git bash y utilice el comando cd para cambiar a la nueva carpeta para instalar la aplicación de ejemplo.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. Ejecute el comando siguiente para clonar el repositorio de ejemplo.Run the following command to clone the sample repository. Este comando crea una copia de la aplicación de ejemplo en el equipo.This command creates a copy of the sample app on your computer.

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

Ejecución de la aplicaciónRun the application

Esta aplicación de MongoDB escrita en Node.js se conecta a su base de datos de Azure Cosmos DB, que admite el cliente de MongoDB.This MongoDB app written in Node.js connects to your Azure Cosmos DB database, which supports MongoDB client. En otras palabras, para la aplicación resulta transparente que los datos se almacenan en una base de datos de Azure Cosmos DB.In other words, it is transparent to the application that the data is stored in an Azure Cosmos DB database.

Instale los paquetes necesarios e inicie la aplicación.Install the required packages and start the application.

cd mean
npm install
npm start

La aplicación intentará conectarse a un origen de MongoDB y producirá un error. Siga adelante y salga de la aplicación cuando la salida devuelva "[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]".

Inicio de sesión en AzureSign in to Azure

Si decide instalar y usar la CLI localmente, para este tema es preciso que ejecute la CLI de Azure versión 2.0 o posterior.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. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, consulte [Instalación de la CLI de Azure].If you need to install or upgrade, see [Install Azure CLI].

Si usa una CLI de Azure instalada, inicie sesión en la suscripción de Azure con el comando az login y siga las instrucciones de la pantalla.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. Puede omitir este paso si usa Azure Cloud Shell.You can skip this step if you're using the Azure Cloud Shell.

az login 

Agregar el módulo de Azure Cosmos DBAdd the Azure Cosmos DB module

Si va a usar una CLI de Azure instalada, ejecute el comando az para comprobar si el componente cosmosdb ya está instalado.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 está en la lista de comandos de referencia, continúe con el comando siguiente.If cosmosdb is in the list of base commands, proceed to the next command. Puede omitir este paso si usa Azure Cloud Shell.You can skip this step if you're using the Azure Cloud Shell.

Si cosmosdb no está en la lista de comandos de referencia, vuelva a instalar la CLI de Azure.If cosmosdb is not in the list of base commands, reinstall Azure CLI.

Crear un grupo de recursosCreate a resource group

Cree un grupo de recursos con el comando az group create.Create a resource group with the az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran recursos de Azure como aplicaciones web, bases de datos y cuentas de almacenamiento.An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed.

En el ejemplo siguiente se crea un grupo de recursos en la región de Oeste de Europa.The following example creates a resource group in the West Europe region. Elija un nombre único para el grupo de recursos.Choose a unique name for the resource group.

Si usa Azure Cloud Shell, seleccione Probarlo, siga las indicaciones de la pantalla para iniciar sesión y, a continuación, copie el comando en el símbolo del sistema.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"

Creación de una cuenta de Azure Cosmos DBCreate an Azure Cosmos DB account

Cree una cuenta de Cosmos con el comando az cosmosdb create.Create a Cosmos account with the az cosmosdb create command.

En el comando siguiente, sustituya su propio nombre único de la cuenta de Cosmos donde vea el marcador de posición <cosmosdb-name>.In the following command, please substitute your own unique Cosmos account name where you see the <cosmosdb-name> placeholder. Este nombre único se usará como parte del punto de conexión de Cosmos DB (https://<cosmosdb-name>.documents.azure.com/), por lo que debe ser único entre todas las cuentas de Cosmos de 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

El parámetro --kind MongoDB habilita las conexiones de cliente de MongoDB.The --kind MongoDB parameter enables MongoDB client connections.

Cuando se crea la cuenta de Azure Cosmos DB, la CLI de Azure muestra información similar a la del ejemplo siguiente.When the Azure Cosmos DB account is created, the Azure CLI shows information similar to the following example.

Nota

Este ejemplo usa JSON como el formato de salida de la CLI de Azure, que es el valor predeterminado.This example uses JSON as the Azure CLI output format, which is the default. Para usar otro formato de salida, consulte Formatos de salida para los comandos de la CLI de Azure.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"
    }
  ]
} 

Conexión de la aplicación Node.js a la base de datosConnect your Node.js application to the database

En este paso, se conecta la aplicación de ejemplo MEAN.js a la base de datos de Azure Cosmos DB que acaba de crear.In this step, you connect your MEAN.js sample application to the Azure Cosmos DB database account you just created.

Configuración de la cadena de conexión en la aplicación Node.jsConfigure the connection string in your Node.js application

En el repositorio de MEAN.js, abra config/env/local-development.js.In your MEAN.js repository, open config/env/local-development.js.

Reemplace el contenido de este archivo por el código siguiente.Replace the content of this file with the following code. No olvide reemplazar los dos marcadores de posición <cosmosdb-name> por el nombre de la cuenta de 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'
  }
};

Recuperar la claveRetrieve the key

Para conectarse a una base de datos de Cosmos, necesita la clave de base de datos.In order to connect to a Cosmos database, you need the database key. Use el comando az cosmosdb keys list para recuperar la clave principal.Use the az cosmosdb keys list command to retrieve the primary key.

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

La CLI de Azure genera información similar a la del ejemplo siguiente.The Azure CLI outputs information similar to the following example.

"RUayjYjixJDWG5xTqIiXjC..."

Copie el valor de primaryMasterKey.Copy the value of primaryMasterKey. Péguelo en la <primary_master_key> en local-development.js.Paste this over the <primary_master_key> in local-development.js.

Guarde los cambios.Save your changes.

Vuelva a ejecutar la aplicación.Run the application again.

Vuelva a ejecutar npm start.Run npm start again.

npm start

Un mensaje de consola debería indicarle que el entorno de desarrollo está en funcionamiento.A console message should now tell you that the development environment is up and running.

Vaya a http://localhost:3000 en un explorador.Go to http://localhost:3000 in a browser. Seleccione Registrarse en el menú superior e intente crear dos usuarios ficticios.Select Sign Up in the top menu and try to create two dummy users.

La aplicación de ejemplo MEAN.js almacena datos de usuario en la base de datos.The MEAN.js sample application stores user data in the database. Si lo logra y MEAN.js inicia la sesión automáticamente del usuario creado, significa que la conexión de Azure Cosmos DB funciona.If you are successful and MEAN.js automatically signs into the created user, then your Azure Cosmos DB connection is working.

MEAN.js se conecta correctamente a MongoDB

Ver datos en el Explorador de datosView data in Data Explorer

Los datos almacenados en una base de datos de Cosmos se pueden ver y consultar en Azure Portal.Data stored in a Cosmos database is available to view and query in the Azure portal.

Para ver y consultar los datos de usuario creados en el paso anterior y trabajar con ellos, inicie sesión en Azure Portal en el explorador web.To view, query, and work with the user data created in the previous step, login to the Azure portal in your web browser.

En el cuadro de búsqueda superior, escriba Azure Cosmos DB.In the top Search box, enter Azure Cosmos DB. Cuando se abra la hoja de la cuenta de Cosmos, seleccione su cuenta de Cosmos.When your Cosmos account blade opens, select your Cosmos account. En el panel de navegación izquierdo, seleccione Explorador de datos.In the left navigation, select Data Explorer. Expanda la colección en el panel Colecciones. Ahora puede ver los documentos de la colección, consultar los datos e incluso crear y ejecutar procedimientos almacenados, desencadenadores y UDF.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.

Explorador de datos en Azure Portal

Implementación de la aplicación Node.js en AzureDeploy the Node.js application to Azure

En este paso, implementará la aplicación Node.js en Cosmos DB.In this step, you deploy your Node.js application to Cosmos DB.

Probablemente habrá observado que el archivo de configuración que cambió anteriormente está pensado para el entorno de desarrollo (/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). Al implementar la aplicación en App Service, se ejecutará en el entorno de producción de forma predeterminada.When you deploy your application to App Service, it will run in the production environment by default. Por esta razón, ahora debe realizar el mismo cambio en el archivo de configuración correspondiente.So now, you need to make the same change to the respective configuration file.

En el repositorio de MEAN.js, abra config/env/production.js.In your MEAN.js repository, open config/env/production.js.

En el objeto db, reemplace el valor de uri como se muestra en el ejemplo siguiente.In the db object, replace the value of uri as show in the following example. No olvide reemplazar los marcadores de posición como hizo antes.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

La opción ssl=true es importante debido a los requisitos de Cosmos DB.The ssl=true option is important because of Cosmos DB requirements. Para más información, consulte Requisitos de la cadena de conexión.For more information, see Connection string requirements.

En el terminal, confirme todos los cambios en Git.In the terminal, commit all your changes into Git. Puede copiar ambos comandos para ejecutarlos juntos.You can copy both commands to run them together.

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

Limpieza de recursosClean up resources

Cuando haya terminado tanto con la aplicación como con la cuenta de Azure Cosmos DB, puede eliminar los recursos de Azure que creó para no tener más gastos.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. Para eliminar los recursos:To delete the resources:

  1. En la barra de búsqueda de Azure Portal, busque y seleccione Grupos de recursos.In the Azure portal Search bar, search for and select Resource groups.

  2. En la lista, seleccione el grupo de recursos que creó para este inicio rápido.From the list, select the resource group you created for this quickstart.

    Selección del grupo de recursos que se eliminará

  3. En la página Información general del grupo de recursos, seleccione Eliminar grupo de recursos.On the resource group Overview page, select Delete resource group.

    Eliminar el grupo de recursos

  4. En la ventana siguiente, escriba el nombre del grupo de recursos que desea eliminar y, después, seleccione Eliminar.In the next window, enter the name of the resource group to delete, and then select Delete.

Pasos siguientesNext steps

En este inicio rápido, ha aprendido a crear una cuenta de Azure Cosmos DB para MongoDB API mediante Azure Cloud Shell, y a crear y ejecutar una aplicación MEAN.js para agregar usuarios a la cuenta.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. Ahora puede importar datos adicionales en la cuenta de Azure Cosmos DB.You can now import additional data to your Azure Cosmos DB account.