Quickstart: Migrar uma aplicação web de Node.js mongoDB existente para Azure Cosmos DBQuickstart: Migrate an existing MongoDB Node.js web app to Azure Cosmos DB

APLICA A: Azure Cosmos DB API para MongoDB

Neste quickstart, você cria e gere uma conta Azure Cosmos DB para Mongo DB API usando a Azure Cloud Shell, e com uma app MEAN (MongoDB, Express, Angular e Node.js) clonada do 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 é um serviço de base de dados multi-modelo que permite criar e consultar rapidamente documentos, tabelas, valor-chave e bases de dados de gráficos com capacidades de distribuição global e 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.

Pré-requisitosPrerequisites

  • Utilize o ambiente Bash em Azure Cloud Shell.Use the Bash environment in Azure Cloud Shell.

    Iniciar Cloud Shell numa nova janelaLaunch Cloud Shell in a new window

  • Se preferir, instale o CLI do Azure para executar comandos de referência de CLI.If you prefer, install the Azure CLI to run CLI reference commands.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login.If you're using a local installation, sign in to the Azure CLI by using the az login command. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal.To finish the authentication process, follow the steps displayed in your terminal. Para obter mais opções de início de sessão, veja Iniciar sessão com o CLI do Azure.For additional sign-in options, see Sign in with the Azure CLI.

    • Quando lhe for pedido, instale as extensões do CLI do Azure durante a primeira utilização.When you're prompted, install Azure CLI extensions on first use. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.For more information about extensions, see Use extensions with the Azure CLI.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas.Run az version to find the version and dependent libraries that are installed. Para atualizar para a versão mais recente, execute o comando az upgrade.To upgrade to the latest version, run az upgrade.

  • Este artigo requer a versão 2.0 ou posterior do Azure CLI.This article requires version 2.0 or later of the Azure CLI. Se utilizar o Azure Cloud Shell, a versão mais recente já está instalada.If using Azure Cloud Shell, the latest version is already installed.

Clonar a aplicação de exemploClone the sample application

Execute os seguintes comandos para clonar o repositório de exemplo.Run the following commands to clone the sample repository. Este repositório de exemplo contém a aplicação MEAN.js predefinida.This sample repository contains the default MEAN.js application.

  1. Abra uma linha de comandos, crie uma nova pasta designada git-samples e, em seguida, feche a linha de comandos.Open a command prompt, create a new folder named git-samples, then close the command prompt.

    mkdir "C:\git-samples"
    
  2. Abra uma janela de terminal do git, como o git bash e utilize o comando cd para alterar para uma nova pasta e instalar a aplicação de exemplo.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. Execute o seguinte comando para clonar o repositório de exemplo.Run the following command to clone the sample repository. Este comando cria uma cópia da aplicação de exemplo no seu computador.This command creates a copy of the sample app on your computer.

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

Executar a aplicaçãoRun the application

Esta aplicação MongoDB escrita em Node.js liga-se à sua base de dados DB Azure Cosmos, que suporta o cliente MongoDB.This MongoDB app written in Node.js connects to your Azure Cosmos DB database, which supports MongoDB client. Por outras palavras, é transparente para a aplicação que os dados são armazenados numa base de dados DB Azure Cosmos.In other words, it is transparent to the application that the data is stored in an Azure Cosmos DB database.

Instale os pacotes necessários e inicie a aplicação.Install the required packages and start the application.

cd mean
npm install
npm start

A aplicação irá tentar ligar a uma origem do MongoDB e falhar, saia da aplicação quando devolver o resultado "[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]".

Iniciar sessão no AzureSign in to Azure

Se estiver a utilizar um Azure CLI instalado, inicie sessão na sua subscrição Azure com o comando de login az e siga as instruções no ecrã.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. Pode ignorar esta etapa se estiver a utilizar o Azure Cloud Shell.You can skip this step if you're using the Azure Cloud Shell.

az login 

Adicionar o módulo Azure Cosmos DBAdd the Azure Cosmos DB module

Se estiver a utilizar uma CLI do Azure instalada, veja se o componente cosmosdb já está instalado ao executar o 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 está na lista de comandos de base, siga para o próximo comando.If cosmosdb is in the list of base commands, proceed to the next command. Pode ignorar esta etapa se estiver a utilizar o Azure Cloud Shell.You can skip this step if you're using the Azure Cloud Shell.

Se cosmosdb não estiver na lista de comandos de base, reinstale a CLI do Azure.If cosmosdb is not in the list of base commands, reinstall Azure CLI.

Criar um grupo de recursosCreate a resource group

Criar um grupo de recursos com o grupo az criar.Create a resource group with the az group create. Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure, como aplicações Web, bases de dados e contas de armazenamento, são implementados e geridos.An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed.

O exemplo seguinte cria um grupo de recursos na região Europa Ocidental.The following example creates a resource group in the West Europe region. Escolha um nome exclusivo para o grupo de recursos.Choose a unique name for the resource group.

Se estiver a utilizar o Azure Cloud Shell, selecione Try It, siga as instruções no ecrã para iniciar sessão e, em seguida, copie o comando para a solicitação de comando.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"

Criar uma conta do Azure Cosmos DBCreate an Azure Cosmos DB account

Crie uma conta Cosmos com o cosmosdb az criar comando.Create a Cosmos account with the az cosmosdb create command.

No seguinte comando, substitua o seu próprio nome exclusivo da conta Cosmos onde vê o <cosmosdb-name> espaço reservado.In the following command, please substitute your own unique Cosmos account name where you see the <cosmosdb-name> placeholder. Este nome único será usado como parte do seu ponto final cosmos DB ( https://<cosmosdb-name>.documents.azure.com/ ), por isso o nome precisa ser único em todas as contas cosmos em 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

O parâmetro --kind MongoDB permite ligações de cliente da MongoDB.The --kind MongoDB parameter enables MongoDB client connections.

Após criar a conta do DB Cosmos Azure, a CLI do Azure mostra informações semelhantes ao exemplo seguinte.When the Azure Cosmos DB account is created, the Azure CLI shows information similar to the following example.

Nota

Este exemplo utiliza o JSON como formato de saída da CLI do Azure, que é a predefinição.This example uses JSON as the Azure CLI output format, which is the default. Para utilizar outro formato de saída, veja Formatos de saída para os comandos da CLI do 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"
    }
  ]
} 

Ligar a aplicação Node.js à base de dadosConnect your Node.js application to the database

Neste passo, liga a sua MEAN.js aplicação de amostra à conta de base de dados Azure Cosmos que acabou de criar.In this step, you connect your MEAN.js sample application to the Azure Cosmos DB database account you just created.

Configurar a cadeia de ligação na aplicação Node.jsConfigure the connection string in your Node.js application

No repositório MEAN.js, abra config/env/local-development.js.In your MEAN.js repository, open config/env/local-development.js.

Substitua o conteúdo deste ficheiro pelo código seguinte.Replace the content of this file with the following code. Certifique-se de também substituir os dois <cosmosdb-name> espaços reservados pelo nome da sua conta 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'
  }
};

Obter a chaveRetrieve the key

Para se ligar a uma base de dados cosmos, precisa da chave de base de dados.In order to connect to a Cosmos database, you need the database key. Use o comando da lista de chaves az cosmosdb para recuperar a chave primária.Use the az cosmosdb keys list command to retrieve the primary key.

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

A CLI do Azure apresenta informações semelhantes ao exemplo seguinte.The Azure CLI outputs information similar to the following example.

"RUayjYjixJDWG5xTqIiXjC..."

Copie o valor de primaryMasterKey.Copy the value of primaryMasterKey. Cole-o em <primary_master_key> em local-development.js.Paste this over the <primary_master_key> in local-development.js.

Guarde as alterações.Save your changes.

Execute novamente a aplicação.Run the application again.

Execute novamente npm start.Run npm start again.

npm start

Uma mensagem de consola deverá agora indicar que o ambiente de desenvolvimento está ativo e em execução.A console message should now tell you that the development environment is up and running.

Vá a http://localhost:3000 um navegador.Go to http://localhost:3000 in a browser. Selecione Iniciar Sessão no menu superior e tente criar dois utilizadores falsos.Select Sign Up in the top menu and try to create two dummy users.

A aplicação MEAN.js de exemplo armazena os dados do utilizador na base de dados.The MEAN.js sample application stores user data in the database. Se o procedimento for concluído com êxito e a aplicação MEAN.js iniciar automaticamente sessão com o utilizador criado, significa que a ligação do DB Cosmos Azure está a funcionar.If you are successful and MEAN.js automatically signs into the created user, then your Azure Cosmos DB connection is working.

A aplicação MEAN.js estabelece ligação com êxito ao MongoDB

Ver dados no Data ExplorerView data in Data Explorer

Os dados armazenados numa base de dados cosmos estão disponíveis para visualização e consulta no portal Azure.Data stored in a Cosmos database is available to view and query in the Azure portal.

Para ver, consultar e trabalhar com os dados do utilizador criados no passo anterior, inicie a sessão no portal do Azure no browser.To view, query, and work with the user data created in the previous step, login to the Azure portal in your web browser.

Na caixa de pesquisa superior, insira Azure Cosmos DB.In the top Search box, enter Azure Cosmos DB. Quando a sua folha de conta Cosmos abrir, selecione a sua conta Cosmos.When your Cosmos account blade opens, select your Cosmos account. Na navegação à esquerda, selecione Data Explorer.In the left navigation, select Data Explorer. Expanda a coleção no painel Coleções e, em seguida, pode ver os documentos na coleção, consultar os dados e, ainda, criar e executar UDFs, acionadores e procedimentos armazenados.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.

Data Explorer no portal do Azure

Implementar a aplicação Node.js no AzureDeploy the Node.js application to Azure

Neste passo, você implementa a sua aplicação Node.js para cosmos DB.In this step, you deploy your Node.js application to Cosmos DB.

Poderá ter reparado que o ficheiro de configuração que alterou anteriormente se destina ao ambiente de desenvolvimento (/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). Ao implementar a aplicação no Serviço de Aplicações, esta será executada, por predefinição, no ambiente de produção.When you deploy your application to App Service, it will run in the production environment by default. Por isso, agora, tem de efetuar a mesma alteração no ficheiro de configuração respetivo.So now, you need to make the same change to the respective configuration file.

No repositório MEAN.js, abra config/env/production.js.In your MEAN.js repository, open config/env/production.js.

No objeto db, substitua o valor do uri, conforme apresentado no exemplo seguinte.In the db object, replace the value of uri as show in the following example. Confirme que substitui os marcadores de posição, como indicado anteriormente.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

A ssl=true opção é importante devido aos requisitos da Cosmos DB.The ssl=true option is important because of Cosmos DB requirements. Para obter mais informações, consulte os requisitos de cadeia de ligação.For more information, see Connection string requirements.

No terminal, confirme todas as alterações no Git.In the terminal, commit all your changes into Git. Pode copiar os dois comandos para executá-los em simultâneo.You can copy both commands to run them together.

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

Limpar os recursosClean up resources

Quando terminar a sua app e a conta DB da Azure Cosmos, pode apagar os recursos Azure que criou para não incorrer em mais encargos.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 os recursos:To delete the resources:

  1. Na barra de pesquisa do portal Azure, procure e selecione grupos de Recursos.In the Azure portal Search bar, search for and select Resource groups.

  2. A partir da lista, selecione o grupo de recursos que criou para este arranque rápido.From the list, select the resource group you created for this quickstart.

    Selecione o grupo de recursos para eliminar

  3. Na página de visão geral do grupo de recursos, selecione Eliminar o grupo de recursos.On the resource group Overview page, select Delete resource group.

    Eliminar o grupo de recursos

  4. Na janela seguinte, insira o nome do grupo de recursos para eliminar e, em seguida, selecione Delete.In the next window, enter the name of the resource group to delete, and then select Delete.

Passos seguintesNext steps

Neste quickstart, aprendeu a criar uma conta AZure Cosmos DB MongoDB API usando a Azure Cloud Shell, e criar e executar uma aplicação MEAN.js para adicionar utilizadores à conta.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. Agora, pode importar dados adicionais para a sua conta do Azure Cosmos DB.You can now import additional data to your Azure Cosmos DB account.