Esercizio - Creare un'app Node.js in Visual Studio Code
In questa unità usare Visual Studio Code per compilare ed eseguire un'applicazione Node.js nella sandbox di Azure contenente le risorse.
- Installare pacchetti npm che consentono di usare a livello di codice il database Core (SQL) di Cosmos DB.
- Scrivere codice JavaScript che carichi il set di dati dei prodotti Contoso in un contenitore.
Nota
Questo esercizio presuppone che siano già stati installati Node.js e npm sul computer desktop e che sia stata avviata la sandbox di Learn, alla quale ci si è connessi in Visual Studio Code.
Creare un progetto Node.js
Usare un terminale nella posizione della cartella in cui si vuole installare l'applicazione Node.js. Immettere il comando seguente per aprire Visual Studio Code nella posizione.
code .
Nel menu Terminale selezionare Nuovo terminale oppure usare i tasti di scelta rapida CTRL + MAIUSC + `.
Nella finestra Terminale eseguire il comando seguente per creare una nuova cartella denominata contoso-retail per l'applicazione Node e passare a tale cartella.
mkdir contoso-retail && cd contoso-retail
Immettere i comandi seguenti per passare all'inizializzazione di una nuova applicazione Node.
npm init -y
Il comando npm init crea un file package.json e ne visualizza il contenuto. Questo file contiene i metadati iniziali per l'applicazione, con un nome predefinito, una descrizione e un punto di ingresso.
Nel menu File in Visual Studio Code scegliere Apri cartella e quindi aprire la cartella contoso-retail.
Nella finestra Esplora risorse selezionare il file package.json.
Nel riquadro dell'editor modificare quanto segue per il file package.json:
Proprietà Valore type module
- Il codice JavaScript del modulo usa la sintassi ES6Il file avrà un aspetto simile al seguente. Il codice di esempio usa la sintassi ES6, quindi è necessario impostare il tipo di applicazione sul modulo.
{ "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" }
Scegliere Save (Salva) dal menu File.
Configurare Visual Studio Code per il salvataggio automatico delle modifiche ai file
- Attivare il salvataggio automatico usando Impostazioni > preferenze > file , CTRL + ,.
- Cercare i file salvati automaticamente.
- Selezionare afterDelay di 1000.
Creare un file con estensione .gitignore
Il file con estensione .gitignore impedisce di archiviare nel controllo del codice sorgente i file che non devono essere aggiunti.
Creare un file, CTRL + N, denominato .gitignore
e aggiungervi quanto segue.
node_modules
.env
Creare un file di ambiente dei segreti
In Visual Studio Code scegliere Nuovo filedal menu File.
Scegliere Salva con nome dal menu File. Salvare il nuovo file con il nome
.env
.Aggiungere al file le variabili seguenti:
COSMOS_CONNECTION_STRING= COSMOS_DATABASE_NAME=ContosoRetail COSMOS_CONTAINER_NAME=Products COSMOS_CONTAINER_PARTITION_KEY=categoryName
In Azure Explorer, MAIUSC + ALT + A, selezionare la sottoscrizione e quindi il nodo Azure Cosmos DB per visualizzare le risorse.
Fare clic con il pulsante destro del mouse sull'account Cosmos DB e scegliere Copia stringa di connessione.
Incollare la stringa di connessione nel
.env
file per la variabile COSMOS_CONNECTION_STRING.
Installare il pacchetto Cosmos DB
Nel terminale integrato aggiungere Cosmos DB SDK.
npm install @azure/cosmos
Nel terminale integrato aggiungere il pacchetto npm per usare il file
.env
per le variabili di ambiente. Questo pacchetto legge il file.env
e aggiunge tali valoriprocess.env
all'oggetto runtime.npm install dotenv
Forma del prodotto
La comprensione del documento JSON consente di comprendere le operazioni, i relativi input e le risposte.
I prodotti in questo set di dati hanno la forma seguente:
{
"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 },
...
]
}
Proprietà | Descrizione |
---|---|
ID | Cosmos DB usa l'identificatore personalizzato, ID, per identificare in modo univoco ogni elemento. L'ID può essere qualsiasi tipo di dati, ad esempio numero, stringa e così via. Se non si specifica l'ID, Cosmos DB ne crea uno automaticamente. |
categoryName | Questa proprietà è stata selezionata in modo specifico per questo set di dati come chiave di partizione. Il nome della categoria di prodotto fornisce una distribuzione piuttosto uniforme dei dati, ideale per la chiave di partizione. Anche categoryName non cambierà molto spesso, il che è importante anche per una chiave di partizione. |
tag e inventario | Si tratta di sottoproprietà che possono essere usate per trovare e rimodellare i risultati delle query tramite la parola chiave JOIN. |
Creare lo script per aggiungere prodotti a un contenitore
In Visual Studio Code scegliere Nuovo file di testo dal menu File.
Scegliere Salva con nome dal menu File. Salvare il nuovo file con il nome 1-contoso-products-upload-data.js.
Copiare il codice JavaScript seguente e incollarlo nel file.
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
Creare un nuovo file denominato products.json e copiarvi il contenuto del file di dati di esempio, products.json.
Si tratta di una matrice di oggetti JSON.
Nel terminale di Visual Studio Code eseguire il file JavaScript per caricare i dati nel contenitore Cosmos DB:
node 1-contoso-products-upload-data.js
Il terminale visualizza il numero di elementi, activityId, statusCode e il nome dell'elemento.
Oggetto risultato dell'operazione
L'oggetto risultato restituito da un'operazione è descritto nella documentazione di riferimento di Cosmos DB SQL. Anche se il risultato può contenere informazioni specifiche per l'operazione, ogni risultato avrà alcune proprietà che verranno sempre restituite e saranno utili per determinare cosa è accaduto.
Proprietà risultato | Descrizione |
---|---|
activityId | ID evento univoco associato all'operazione specifica. Se l'operazione non riesce ed è necessario contattare il supporto tecnico, questo ID, insieme al nome della risorsa e alla sottoscrizione, è utile per individuare rapidamente il problema. |
statusCode | Codice di stato HTTP che indica l'esito positivo o negativo dell'operazione. |
resource | Si tratta di un oggetto JSON dell'oggetto finale, ad esempio un documento JSON in un contenitore. |
Visualizzare i documenti di Cosmos DB in Visual Studio Code
In Visual Studio Code aprire Esplora risorse di Azure oppure usare i tasti di scelta rapida MAIUSC + ALT + A.
Trovare ed espandere il nodo Sottoscrizione Concierge, quindi il nodo risorse di Azure Cosmos DB.
Trovare ed espandere il database ContosoRetail e il relativo contenitore Prodotti.
Espandere il nodo Documenti per visualizzare i prodotti aggiunti dallo script Node.js. Il nome del nodo per ogni documento è la proprietà name.
Selezionare il primo prodotto per visualizzare l'intero JSON.
Controlla il tuo lavoro
- In Visual Studio Code, nell'estensione Database di Azure vengono visualizzati l'account, il database e il contenitore Cosmos DB.
- Quando si espande il contenitore, vengono visualizzati molti elementi nel nodo Documenti.