Exercício – Criar uma aplicação Node.js no Visual Studio Code
Nesta unidade, use o Visual Studio Code para criar e executar um aplicativo Node.js na área restrita do Azure que contém seus recursos.
- Instale pacotes npm que permitem que você trabalhe programaticamente com seu banco de dados Cosmos DB Core (SQL).
- Escreva o código JavaScript que carrega o conjunto de dados dos produtos Contoso em um contêiner.
Nota
Este exercício pressupõe que você já tenha instalado o Node.js e o npm em seu computador desktop e iniciado a área restrita do Learn e conectado a ele no Visual Studio Code.
Criar Node.js projeto
Use um terminal em um local de pasta onde você deseja que seu aplicativo Node.js. Digite o seguinte comando para abrir o Visual Studio Code no local.
code .
No menu Terminal, selecione Novo Terminal ou use o atalho de teclado, Ctrl + Shift + `.
Na janela Terminal, execute o seguinte comando para criar uma nova pasta chamada contoso-retail para o aplicativo Node e altere para essa pasta.
mkdir contoso-retail && cd contoso-retail
Insira os seguintes comandos para mover para inicializar um novo aplicativo Node.
npm init -y
O comando npm init cria um ficheiro package.json e apresenta os conteúdos. Este ficheiro contém os metadados iniciais da aplicação, que contêm um nome, uma descrição e um ponto de entrada de predefinição.
No menu Arquivo no Visual Studio Code, selecione Abrir pasta e abra a pasta contoso-retail.
Na janela Explorer (Explorador), selecione o ficheiro package.json.
No painel do editor, altere o seguinte para o arquivo package.json :
Property valor type module
- o código JavaScript do módulo usa a sintaxe ES6O ficheiro deverá ter o seguinte aspeto: O código de exemplo usa a sintaxe ES6, portanto, você precisa definir o tipo do aplicativo como módulo.
{ "name": "contoso-retail", "version": "1.0.0", "description": "Student and course grades maintenance", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "MIT" }
No menu File (Ficheiro), selecione Save (Guardar).
Configurar o Visual Studio Code para salvar automaticamente as alterações de arquivo
- Ative o salvamento automático usando as Configurações de preferências > de arquivo>, Ctrl + ,.
- Procure ficheiros guardados automaticamente.
- Selecione afterDelay de 1000.
Criar arquivo .gitignore
O arquivo .gitignore impede que você faça check-in de arquivos no controle do código-fonte que não devem ser adicionados.
Crie um arquivo, Ctrl + N, nomeado .gitignore
e adicione o seguinte a ele.
node_modules
.env
Criar arquivo de ambiente de segredos
No Visual Studio Code, no menu Arquivo , selecione Novo arquivo de texto.
No menu File (Ficheiro), selecione Save As (Guardar Como). Salve o novo arquivo com o nome
.env
.Adicione as seguintes variáveis ao arquivo:
COSMOS_CONNECTION_STRING= COSMOS_DATABASE_NAME=ContosoRetail COSMOS_CONTAINER_NAME=Products COSMOS_CONTAINER_PARTITION_KEY=categoryName
No explorador do Azure, Shift + Alt + A, selecione a sua subscrição e, em seguida, o nó Azure Cosmos DB para ver os recursos.
Clique com o botão direito do mouse em sua conta do Cosmos DB e selecione Copiar cadeia de conexão.
Cole a cadeia de conexão no
.env
arquivo para a variável COSMOS_CONNECTION_STRING .
Instalar o pacote do Cosmos DB
No terminal integrado, adicione o SDK do Cosmos DB.
npm install @azure/cosmos
No terminal integrado, adicione o pacote npm para usar o
.env
arquivo para variáveis de ambiente. Este pacote lê o.env
arquivo e adiciona esses valores aoprocess.env
objeto de tempo de execução.npm install dotenv
Forma do produto
Compreender o JSON no documento ajuda a entender a entrada para as operações e as respostas.
Os produtos neste conjunto de dados têm a seguinte forma:
{
"id": "FEEFEE3B-6CB9-4A75-B896-5182531F661B",
"categoryId": "AE48F0AA-4F65-4734-A4CF-D48B8F82267F",
"categoryName": "Bikes, Road Bikes",
"sku": "BK-R19B-52",
"name": "Road-750 Black, 52",
"description": "The product called \"Road-750 Black, 52\"",
"price": 539.99,
"tags": [
{ "id": "461ADE06-0903-4BAF-97AB-CC713E5B1DD4", "name": "Tag-174" },
...
],
"inventory": [
{ "location": "Dallas", "inventory": 91 },
...
]
}
Property | Description |
---|---|
id | O Cosmos DB usa o identificador personalizado, id, para identificar exclusivamente cada item. O ID pode ser qualquer tipo de dados, como número, string, etc. Se você não fornecer o ID, o Cosmos DB criará um para você. |
categoryName | Esta propriedade é selecionada especificamente para este conjunto de dados como a chave de partição. O nome da categoria do produto fornece uma distribuição uniforme dos dados, o que é ideal para a chave de partição. Além disso, o categoryName não muda com frequência, o que é importante para uma chave de partição. |
tags e inventário | Eles representam subpropriedades que podem ser usadas para localizar e remodelar os resultados de consultas usando a JOIN palavra-chave. |
Criar o script para adicionar produtos a um contêiner
No Visual Studio Code, no menu Arquivo , selecione Novo arquivo de texto.
No menu File (Ficheiro), selecione Save As (Guardar Como). Salve o novo arquivo com o nome 1-contoso-products-upload-data.js.
Copie o JavaScript a seguir e cole-o no arquivo.
import * as path from "path"; import { promises as fs } from "fs"; import { fileURLToPath } from "url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); // Get environment variables from .env import * as dotenv from "dotenv"; dotenv.config(); // Get Cosmos Client import { CosmosClient } from "@azure/cosmos"; // Provide required connection from environment variables const cosmosSecret = process.env.COSMOS_CONNECTION_STRING; // Authenticate to Azure Cosmos DB const cosmosClient = new CosmosClient(cosmosSecret); // Set Database name and container name const databaseName = process.env.COSMOS_DATABASE_NAME; const containerName = process.env.COSMOS_CONTAINER_NAME; const partitionKeyPath = [`/${process.env.COSMOS_CONTAINER_PARTITION_KEY}`]; // Create DB if it doesn't exist const { database } = await cosmosClient.databases.createIfNotExists({ id: databaseName, }); // Create container if it doesn't exist const { container } = await database.containers.createIfNotExists({ id: containerName, partitionKey: { paths: partitionKeyPath, }, }); // Get product data const fileAndPathToJson = "products.json"; const items = JSON.parse(await fs.readFile(path.join(__dirname, fileAndPathToJson), "utf-8")); let i = 0; // Insert products into container for (const item of items) { const { resource, activityId, statusCode } = await container.items.create(item); console.log(`[${i++}] activityId: ${activityId}, statusCode: ${statusCode}, ${resource.name} inserted`); } // Show container name - copy/paste into .env console.log(`\n\ncontainerName: ${containerName}`);// // Run script with // node 1-contoso-products-upload-data.js
Crie um novo arquivo, chamado products.json, e copie o conteúdo do arquivo de dados de exemplo, products.json nele.
O arquivo contém uma matriz de objetos JSON.
No terminal do Visual Studio Code, execute o arquivo JavaScript para carregar os dados no contêiner do Cosmos DB:
node 1-contoso-products-upload-data.js
O terminal exibe a contagem de itens, activityId, statusCode e o nome do item.
O objeto de resultado da operação
O objeto de resultado retornado de uma operação está documentado na documentação de referência SQL do Cosmos DB. Embora o resultado possa ter informações específicas para a operação, cada resultado tem algumas propriedades que são sempre retornadas e são úteis para determinar o que aconteceu.
Propriedade Result | Description |
---|---|
activityId | O ID de evento exclusivo associado à operação específica. Esse ID, juntamente com o nome do recurso e a assinatura, pode ajudar a identificar o problema se a operação falhar e você precisar entrar em contato com o suporte. |
statusCode | O código de status HTTP que indica o sucesso ou falha da operação. |
recurso | Este é um objeto JSON do objeto final, como um documento JSON em um contêiner. |
Exibir documentos do Cosmos DB no Visual Studio Code
No Visual Studio Code, abra o explorador do Azure ou utilize o atalho de teclado, Shift + Alt + A.
Encontre e expanda o nó Assinatura do Concierge e, em seguida, o nó de recursos do Azure Cosmos DB .
Localize e expanda seu banco de dados ContosoRetail e seu contêiner Products .
Expanda o nó Documentos para ver os produtos que o script Node.js adicionou. O nome do nó para cada documento é a propriedade name .
Selecione o primeiro produto para ver todo o JSON.
Verifique o seu trabalho
- No Visual Studio Code, na extensão Bancos de Dados do Azure, você vê sua conta, banco de dados e contêiner do Cosmos DB.
- Quando você expande seu contêiner, vê muitos itens no nó Documentos .