Início Rápido: Migre um aplicativo Web Node.js do MongoDB existente para o Azure Cosmos DBQuickstart: Migrate an existing MongoDB Node.js web app to Azure Cosmos DB

O Azure Cosmos DB é o serviço de banco de dados multimodelo distribuído globalmente da Microsoft.Azure Cosmos DB is Microsoft’s globally distributed multi-model database service. É possível criar e consultar rapidamente bancos de dados de documentos, de chave/valor e de grafo, que se beneficiem das funcionalidades de escala horizontal e de distribuição global no núcleo do 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.

Este início rápido demonstra como usar um aplicativo MongoDB existente escrito em Node.js e conectá-lo ao banco de dados Cosmos, que é compatível com o cliente do 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. Em outras palavras, é transparente para o aplicativo que os dados são armazenados em um banco de dados Cosmos.In other words, it is transparent to the application that the data is stored in a Cosmos database.

Ao terminar, você terá um aplicativo MEAN (MongoDB, Express, Angular e Node.js) em execução no Cosmos DB.When you are done, you will have a MEAN application (MongoDB, Express, Angular, and Node.js) running on Cosmos DB.

Aplicativo MEAN.js em execução no Serviço de Aplicativo do Azure

Usar o Azure Cloud ShellUse Azure Cloud Shell

O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. O Cloud Shell permite usar bash ou PowerShell para trabalhar com serviços do Azure.Cloud Shell lets you use either bash or PowerShell to work with Azure services. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo sem precisar instalar nada no seu ambiente 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.

Para iniciar o Azure Cloud Shell:To launch Azure Cloud Shell:

OpçãoOption Exemplo/LinkExample/Link
Selecione Experimente no canto superior direito de um bloco de código.Select Try It in the upper-right corner of a code block. Selecionar Experimente não copia automaticamente o código para o Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemplo de “Experimente” no Azure Cloud Shell
Acesse https://shell.azure.com ou clique no botão Iniciar o Cloud Shell para abri-lo no navegador.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Inicie o Cloud Shell em uma nova janelaLaunch Cloud Shell in a new window
Clique no botão Cloud Shell na barra de menus no canto superior direito do portal do Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Botão Cloud Shell no portal do Azure

Para executar o código neste artigo no Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie o Cloud Shell.Launch Cloud Shell.
  2. Clique no botão Copiar no bloco de código para copiá-lo.Select the Copy button on a code block to copy the code.
  3. Cole o código na sessão do Cloud Shell com Ctrl+Shift+V no Windows e no Linux ou Cmd+Shift+V no macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Pressione Enter para executar o código.Press Enter to run the code.

Se você optar por instalar e usar a CLI localmente, este tópico exigirá que você esteja executando a CLI do Azure versão 2.0 ou 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. Execute az --version para encontrar a versão.Run az --version to find the version. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.If you need to install or upgrade, see Install Azure CLI.

Pré-requisitosPrerequisites

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Como alternativa, você pode Experimentar o Azure Cosmos DB gratuitamente sem uma assinatura do Azure, gratuitamente e sem compromisso.Alternatively, you can Try Azure Cosmos DB for free without an Azure subscription, free of charge and commitments. Ou você pode usar o Emulador do Azure Cosmos DB neste tutorial com uma cadeia de conexão deOr 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

Além da CLI do Azure, você precisa do Node.js e do Git instalados localmente para executar os comandos npm e git.In addition to Azure CLI, you need Node.js and Git installed locally to run npm and git commands.

Você deve ter conhecimento prático de Node.js.You should have working knowledge of Node.js. Este início rápido não se destina a ajudá-lo a desenvolver aplicativos Node.js em geral.This quickstart is not intended to help you with developing Node.js applications in general.

Clonar o aplicativo de exemploClone the sample application

Execute os comandos a seguir para clonar o repositório de exemplo.Run the following commands to clone the sample repository. Esse repositório de exemplo contém o aplicativo MEAN.js padrão.This sample repository contains the default MEAN.js application.

  1. Abra um prompt de comando, crie uma nova pasta chamada exemplos de git e feche o prompt de comando.Open a command prompt, create a new folder named git-samples, then close the command prompt.

    md "C:\git-samples"
    
  2. Abra uma janela de terminal de git, como git bash, e use o comando cd para alterar para a nova pasta para instalar o aplicativo 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 comando a seguir para clonar o repositório de exemplo.Run the following command to clone the sample repository. Este comando cria uma cópia do aplicativo 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 o aplicativoRun the application

Instale os pacotes necessários e inicie o aplicativo.Install the required packages and start the application.

cd mean
npm install
npm start

O aplicativo tentará se conectar a uma fonte do MongoDB e falhará; prossiga e saia do aplicativo quando a saída retornar "[MongoError: conectar 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]".

Fazer logon no AzureLog in to Azure

Se você estiver usando uma CLI do Azure instalada, faça logon na sua assinatura do Azure com o comando az login e siga as instruções na tela.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. Você poderá ignorar esta etapa se estiver usando o Azure Cloud Shell.You can skip this step if you're using the Azure Cloud Shell.

az login 

Adicione o módulo do BD Cosmos do AzureAdd the Azure Cosmos DB module

Se você estiver usando uma CLI do Azure instalada, verifique 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 estiver na lista de comandos básicos, vá para o próximo comando.If cosmosdb is in the list of base commands, proceed to the next command. Você poderá ignorar esta etapa se estiver usando 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 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

Crie um grupo de recursos com o az group create.Create a resource group with the az group create. Um grupo de recursos do Azure é um contêiner lógico no qual os recursos do Azure, como os aplicativos Web, bancos de dados e contas de armazenamento, são implantados e gerenciados.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 a seguir cria um grupo de recursos na região da 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 você estiver usando o Azure Cloud Shell, clique em Experimente, siga as instruções na tela para fazer logon e copie o comando para o prompt de comando.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"

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

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

No comando a seguir, substitua os espaços reservados <cosmosdb-name> pelo seu próprio nome exclusivo da conta do Cosmos.In the following command, please substitute your own unique Cosmos account name where you see the <cosmosdb-name> placeholder. Esse nome exclusivo será usado como parte do ponto de extremidade do Cosmos DB (https://<cosmosdb-name>.documents.azure.com/), portanto, o nome precisa ser exclusivo entre todas as contas do Cosmos no 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 habilita conexões do cliente MongoDB.The --kind MongoDB parameter enables MongoDB client connections.

Quando a conta do BD Cosmos do Azure é criada, a CLI do Azure mostra informações semelhantes ao exemplo a seguir.When the Azure Cosmos DB account is created, the Azure CLI shows information similar to the following example.

Observação

Este exemplo usa JSON como o formato de saída da CLI do Azure, que é o padrão. Para usar outro formato de saída, consulte Formatos de saída para comandos da CLI do Azure.

{
  "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"
    }
  ]
} 

Conectar o aplicativo Node.js ao banco de dadosConnect your Node.js application to the database

Nesta etapa, você conectará o aplicativo de exemplo MEAN.js ao banco de dados Cosmos que acabou de criar.In this step, you connect your MEAN.js sample application to Cosmos database you just created.

Configurar a cadeia de conexão em seu aplicativo Node.jsConfigure the connection string in your Node.js application

No seu 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 arquivo pelo código a seguir.Replace the content of this file with the following code. Substitua também os dois espaços reservados <cosmosdb-name> pelo nome da sua conta do 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 a chaveRetrieve the key

Para conectar-se a um banco de dados Cosmos, você precisa da chave de banco de dados.In order to connect to a Cosmos database, you need the database key. Use o comando az cosmosdb list-keys para recuperar a chave primária.Use the az cosmosdb list-keys command to retrieve the primary key.

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

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

"RUayjYjixJDWG5xTqIiXjC..."

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

Salve suas alterações.Save your changes.

Execute o aplicativo novamente.Run the application again.

Execute npm start novamente.Run npm start again.

npm start

Agora, uma mensagem de console deve informar que o ambiente de desenvolvimento está em execução.A console message should now tell you that the development environment is up and running.

Navegue até http://localhost:3000 em um navegador.Navigate to http://localhost:3000 in a browser. Clique em Inscrever-se no menu superior e tente criar dois usuários fictícios.Click Sign Up in the top menu and try to create two dummy users.

O aplicativo de exemplo MEAN.js armazena dados do usuário no banco de dados.The MEAN.js sample application stores user data in the database. Se você tiver êxito e o MEAN.js entrar automaticamente no usuário criado, então a conexão do BD Cosmos do Azure estará funcionando.If you are successful and MEAN.js automatically signs into the created user, then your Azure Cosmos DB connection is working.

O MEAN.js conecta-se com êxito ao MongoDB

Exibir dados no Data ExplorerView data in Data Explorer

Os dados armazenados em um banco de dados Cosmos ficam disponíveis para exibição e consulta no portal do Azure.Data stored in a Cosmos database is available to view and query in the Azure portal.

Para exibir, consultar e trabalhar com os dados de usuário criados na etapa anterior, faça logon no portal do Azure no seu navegador da Web.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, digite BD Cosmos do Azure.In the top Search box, type Azure Cosmos DB. Quando a folha da conta do Cosmos abrir, selecione sua conta do Cosmos.When your Cosmos account blade opens, select your Cosmos account. No painel de navegação esquerdo, clique em Data Explorer.In the left navigation, click Data Explorer. Expanda a coleção no painel Coleções e, em seguida, será possível exibir os documentos na coleção, consultar os dados e até mesmo criar e executar gatilhos, UDFs 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

Implantar o aplicativo Node.js no AzureDeploy the Node.js application to Azure

Nesta etapa, você implantará o aplicativo Node.js no Cosmos DB.In this step, you deploy your Node.js application to Cosmos DB.

Você talvez tenha notado que o arquivo de configuração alterado anteriormente é voltado para o 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). Quando você implanta seu aplicativo no Serviço de Aplicativo, ele será executado no ambiente de produção por padrão.When you deploy your application to App Service, it will run in the production environment by default. Agora, você precisa fazer a mesma alteração no arquivo de configuração respectivo.So now, you need to make the same change to the respective configuration file.

No seu 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 de uri conforme mostrado no exemplo a seguir.In the db object, replace the value of uri as show in the following example. Certifique-se de substituir os espaços reservados como 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',

Observação

A opção ssl=true é importante porque o BD Cosmos requer SSL.

No terminal, confirme todas as alterações no Git.In the terminal, commit all your changes into Git. É possível copiar ambos os comandos para os executar juntos.You can copy both commands to run them together.

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

Limpar recursosClean up resources

Quando você concluir seu aplicativo Web e a conta do Azure Cosmos DB, poderá excluir os recursos do Azure criados para não incorrer em mais cobranças.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. Para excluir os recursos:To delete the resources:

  1. No portal do Azure, selecione Grupos de recursos no canto esquerdo.In the Azure portal, select Resource groups on the far left. Se o menu esquerdo estiver recolhido, selecione Expandir botão para expandi-lo.If the left menu is collapsed, select Expand button to expand it.

  2. Selecione o grupo de recursos que você criou para este início rápido.Select the resource group you created for this quickstart.

    Métricas no portal do Azure

  3. Na nova janela, selecione Excluir grupo de recursos.In the new window, select Delete resource group.

    Métricas no portal do Azure

  4. Na próxima janela, digite o nome do grupo de recursos a ser excluído e selecione Excluir.In the next window, type the name of the resource group to delete, and then select Delete.

Próximas etapasNext steps

Neste início rápido, você aprendeu como criar uma conta do Cosmos, criar uma coleção e executar um aplicativo de console.In this quickstart, you've learned how to create a Cosmos account, create a collection and run a console app. Agora você pode importar dados adicionais para o banco de dados Cosmos.You can now import additional data to your Cosmos database.