Zelfstudie: Een app voor Node.js en MongoDB bouwen in Azure

Azure App Service biedt een uiterst schaalbare webhostingservice met self-patchfunctie. In deze zelfstudie ziet u hoe u een Node.js-app maakt in App Service op Windows en deze verbindt met een MongoDB-database. Als u klaar bent, beschikt u over een MEAN-toepassing (MongoDB, Express, AngularJS en Node.js) die wordt uitgevoerd in Azure App Service. De voorbeeldtoepassing gebruikt een combinatie vanSails.js en Angular 12.

Azure App Service biedt een uiterst schaalbare webhostingservice met self-patchfunctie via het Linux-besturingssysteem. In deze zelfstudie wordt beschreven hoe u een Node.js-app in App Service op Linux maakt, deze lokaal verbindt met een MongoDB-database en vervolgens in een database in de API van Azure Cosmos DB voor MongoDB implementeert. Als u klaar bent, beschikt u over een MEAN-toepassing (MongoDB, Express, AngularJS en Node.js) die wordt uitgevoerd in App Service onder Linux. De voorbeeldtoepassing gebruikt een combinatie vanSails.js en Angular 12.

MEAN-app die wordt uitgevoerd in Azure App Service

Wat u leert:

  • Een MongoDB-database maken in Azure
  • Een Node.js-app verbinden met MongoDB
  • De app implementeren in Azure
  • Het gegevensmodel bijwerken en de app opnieuw implementeren
  • Logboeken met diagnostische gegevens vanaf Azure streamen
  • De app in Azure Portal beheren

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

Vereisten voor het voltooien van deze zelfstudie:

  • Gebruik de bash-omgeving in Azure Cloud shell.

    Cloud Shell starten in een nieuw venster

  • Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren.

    • Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht AZ login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij de Azure CLI voor aanvullende aanmeldingsopties.

    • Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.

    • Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.

Lokale Node.js-app maken

In deze stap stelt u het lokale Node.js-project in.

De voorbeeldtoepassing klonen

Voer in het terminalvenster de opdracht cd naar een werkmap uit.

Voer de volgende opdracht uit om de voorbeeldopslagplaats te klonen.

git clone https://github.com/Azure-Samples/mean-todoapp.git

Notitie

Zie voor meer informatie over hoe de voorbeeld-app wordt https://github.com/Azure-Samples/mean-todoapp gemaakt.

De toepassing uitvoeren

Voer de volgende opdrachten uit om de vereiste pakketten te installeren en de toepassing te starten.

cd mean-todoapp
npm install
node app.js --alter

Wanneer de app volledig is geladen, ziet u een bericht zoals dit:

debug: -------------------------------------------------------
debug: :: Fri Jul 09 2021 13:10:34 GMT+0200 (Central European Summer Time)

debug: Environment : development
debug: Port        : 1337
debug: -------------------------------------------------------

Ga naar http://localhost:1337 in een browser. Voeg enkele todo-items toe.

De MEAN-voorbeeldtoepassing slaat gebruikersgegevens op in de database. Standaard wordt een op schijf gebaseerde ontwikkelingsdatabase gebruikt. Als u todo-items kunt maken en zien, leest en schrijft uw app gegevens.

MEAN-app is geladen

Als u Node.js wilt stoppen, drukt u in de terminal op Ctrl+C.

Productie-MongoDB maken

In deze stap maakt u een MongoDB-database in Azure. Als de app is geïmplementeerd in Azure, wordt deze cloud-database gebruikt.

Voor MongoDB wordt in deze zelfstudie gebruikgemaakt van Azure Cosmos DB. Cosmos DB ondersteunt MongoDB-clientverbindingen.

Een resourcegroep maken

Een resourcegroep is een logische container waarin Azure-resources, zoals web-apps, databases en opslagaccounts, worden geïmplementeerd en beheerd. U kunt bijvoorbeeld later de hele resourcegroep in één stap verwijderen.

Maak een resourcegroep in Cloud Shell met de opdracht az group create. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie Europa - west. Als u alle ondersteunde locaties voor App Service in de Gratis laag wilt zien, voert u de opdracht az appservice list-locations --sku FREE uit.

az group create --name myResourceGroup --location "West Europe"

In het algemeen maakt u een resourcegroep en resources in een regio bij u in de buurt.

Wanneer de opdracht is voltooid, laat een JSON-uitvoer u de eigenschappen van de resource-groep zien.

Cosmos DB-account maken

Notitie

Er zijn kosten voor het maken van de Azure Cosmos DB-databases in deze zelfstudie in uw eigen Azure-abonnement. Als u gedurende zeven dagen een gratis Azure Cosmos DB-account wilt gebruiken, kunt u de ervaring Probeer Azure Cosmos DB gratis uit gebruiken. Klik gewoon op de knop Maken in de tegel MongoDB om een gratis MongoDB-database te maken in Azure. Wanneer de database is gemaakt, gaat u naar Verbindingsreeks in de portal en haalt u de verbindingsreeks voor Azure Cosmos DB op die u verderop in de zelfstudie gaat gebruiken.

Maak in Cloud Shell een Cosmos DB-account met de opdracht az cosmosdb create.

Vervang in de volgende opdracht de tijdelijke aanduiding <cosmosdb-name> door een unieke Cosmos DB-naam. Deze naam wordt gebruikt als onderdeel van het Cosmos DB-eindpunt, https://<cosmosdb-name>.documents.azure.com/. De naam moet dus uniek zijn voor alle Cosmos DB-accounts in Azure. De naam mag alleen kleine letters, cijfers en het afbreekstreepje (-) bevatten, en moet tussen de 3 en 50 tekens lang zijn.

az cosmosdb create --name <cosmosdb-name> --resource-group myResourceGroup --kind MongoDB

De parameter --kind MongoDB maakt MongoDB-clientverbindingen mogelijk.

Wanneer het Cosmos DB-account wordt gemaakt toont de Azure CLI informatie die lijkt op het volgende voorbeeld:

{
  "apiProperties": {
    "serverVersion": "3.6"
  },
  "backupPolicy": {
    "periodicModeProperties": {
      "backupIntervalInMinutes": 240,
      "backupRetentionIntervalInHours": 8,
      "backupStorageRedundancy": "Geo"
    },
    "type": "Periodic"
  },
  "capabilities": [
    {
      "name": "EnableMongo"
    }
  ],
  "connectorOffer": null,
  "consistencyPolicy": {
    "defaultConsistencyLevel": "Session",
    "maxIntervalInSeconds": 5,
    "maxStalenessPrefix": 100
  },
  "cors": [],
  "databaseAccountOfferType": "Standard",
  "defaultIdentity": "FirstPartyIdentity",
  "disableKeyBasedMetadataWriteAccess": false,
  "documentEndpoint": "https://<cosmosdb-name>.documents.azure.com:443/",
  ...
  < Output truncated for readability >
}

App verbinden met productie-MongoDB

In deze stap verbindt u uw voorbeeldtoepassing met de Cosmos DB database die u zojuist hebt gemaakt, met behulp van een MongoDB-connection string.

De databasesleutel ophalen

U hebt de databasesleutel nodig om verbinding te kunnen maken met de Cosmos DB-database. Gebruik in Cloud Shell de opdracht az cosmosdb keys list om de primaire sleutel op te halen.

az cosmosdb keys list --name <cosmosdb-name> --resource-group myResourceGroup

De Azure CLI toont informatie die lijkt op het volgende voorbeeld:

{
  "primaryMasterKey": "RS4CmUwzGRASJPMoc0kiEvdnKmxyRILC9BWisAYh3Hq4zBYKr0XQiSE4pqx3UchBeO4QRCzUt1i7w0rOkitoJw==",
  "primaryReadonlyMasterKey": "HvitsjIYz8TwRmIuPEUAALRwqgKOzJUjW22wPL2U8zoMVhGvregBkBk9LdMTxqBgDETSq7obbwZtdeFY7hElTg==",
  "secondaryMasterKey": "Lu9aeZTiXU4PjuuyGBbvS1N9IRG3oegIrIh95U6VOstf9bJiiIpw3IfwSUgQWSEYM3VeEyrhHJ4rn3Ci0vuFqA==",
  "secondaryReadonlyMasterKey": "LpsCicpVZqHRy7qbMgrzbRKjbYCwCKPQRl0QpgReAOxMcggTvxJFA94fTi0oQ7xtxpftTJcXkjTirQ0pT7QFrQ=="
}

Kopieer de waarde van primaryMasterKey. U hebt deze informatie nodig voor de volgende stap.

De connection string configureren in uw voorbeeldtoepassing

Vervang in uw lokale opslagplaats in config/datastores.js de bestaande inhoud door de volgende code en sla uw wijzigingen op.

module.exports.datastores = {
  default: {
    adapter: 'sails-mongo',
    url: process.env.MONGODB_URI,
    ssl: true,
  },
};

De ssl: true optie is vereist omdat Cosmos DB TLS/SSL vereist. url is ingesteld op een omgevingsvariabele, die u vervolgens gaat instellen.

Stel in de terminal de MONGODB_URI omgevingsvariabele in. Vervang de twee tijdelijke aanduidingen <cosmosdb-name> door de naam van de Cosmos DB-database en vervang de tijdelijke aanduiding <cosmosdb-key> door de sleutel die u in de vorige stap hebt gekopieerd.

export MONGODB_URI=mongodb://<cosmosdb-name>:<cosmosdb-key>@<cosmosdb-name>.documents.azure.com:10250/todoapp

Notitie

Deze connection string volgt de indeling die is gedefinieerd in de Sails.js documentatie.

De toepassing testen met MongoDB

Voer opnieuw uit in een lokaal node app.js --alter terminalvenster.

node app.js --alter

Ga opnieuw naar http://localhost:1337. Als u todo-items kunt maken en zien, leest en schrijft uw app gegevens met behulp van Cosmos DB database in Azure.

Stop Node.js door in het terminalvenster Ctrl+C te typen.

App in Azure implementeren

In deze step implementeert u uw met MongoDB verbonden Node.js-toepassing in Azure App Service.

Een implementatiegebruiker configureren

FTP en lokale Git kunnen worden geïmplementeerd in een Azure-web-app met behulp van een implementatiegebruikers. Zodra u deze implementatiegebruiker hebt gemaakt, kunt u deze voor al uw Azure-implementaties gebruiken. Uw gebruikersnaam en wachtwoord voor implementatie op accountniveau verschillen van de referenties voor uw Azure-abonnement.

Als u de implementatiegebruiker wilt configureren, voert u de opdracht az webapp deployment user set uit in Azure Cloud Shell. Vervang <username> en <password> door de gebruikersnaam en het wachtwoord van de gebruiker van de implementatie.

  • De gebruikersnaam moet uniek zijn binnen Azure en voor lokale Git-pushes en mag het symbool '@' niet bevatten.
  • Het wachtwoord moet ten minste acht tekens lang zijn en minimaal twee van de volgende drie typen elementen bevatten: letters, cijfers en symbolen.
az webapp deployment user set --user-name <username> --password <password>

De JSON-uitvoer toont het wachtwoord als null. Als er een 'Conflict'. Details: 409-fout optreedt, wijzigt u de gebruikersnaam. Als er een 'Bad Request'. Details: 400-fout optreedt, kiest u een sterker wachtwoord.

Noteer uw gebruikersnaam en wachtwoord om te gebruiken bij het implementeren van uw web-apps.

Een App Service-plan maken

Maak in Cloud Shell een App Service-plan met de opdracht az appservice plan create.

In het volgende voorbeeld wordt een App Service met de naam myAppServicePlan gemaakt in de prijscategorie B1:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku B1

Wanneer het App Service-plan is gemaakt, toont de Azure CLI soortgelijke informatie als in het volgende voorbeeld:

{ 
  "freeOfferExpirationTime": null,
  "geoRegion": "UK West",
  "hostingEnvironmentProfile": null,
  "hyperV": false,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "isSpot": false,
  "isXenon": false,
  "kind": "app",
  "location": "ukwest",
  "maximumElasticWorkerCount": 1,
  "maximumNumberOfWorkers": 0,
  < JSON data removed for brevity. >
} 

Maak in Cloud Shell een App Service-plan met de opdracht az appservice plan create.

In het volgende voorbeeld wordt een App Service met de naam myAppServicePlan gemaakt in de prijscategorie B1:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku B1 --is-linux

Wanneer het App Service-plan is gemaakt, toont de Azure CLI soortgelijke informatie als in het volgende voorbeeld:

{ 
  "freeOfferExpirationTime": null,
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Een webtoepassing maken

Een web-app maken in het App Service-plan myAppServicePlan.

In Cloud Shell kunt u de opdracht az webapp create gebruiken. Vervang in het volgende voorbeeld <app-name> door een unieke naam (geldige tekens zijn a-z, 0-9, en -). De runtime is ingesteld op NODE|14-lts. Voer az webapp list-runtimes uit als u alle ondersteunde runtimes wilt zien.

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'NODE|14-lts' --deployment-local-git

Wanneer de web-app is gemaakt, toont de Azure CLI soortgelijke uitvoer als in het volgende voorbeeld:

Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

U hebt een lege web-app gemaakt, met Git-implementatie ingeschakeld.

Notitie

De URL van de externe Git wordt weergegeven in de eigenschap deploymentLocalGitUrl, met de indeling https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Sla deze URL op, want u hebt deze later nodig.

Een web-app maken in het App Service-plan myAppServicePlan.

In Cloud Shell kunt u de opdracht az webapp create gebruiken. Vervang in het volgende voorbeeld <app-name> door een unieke naam (geldige tekens zijn a-z, 0-9, en -). De runtime is ingesteld op NODE|14-lts. Voer az webapp list-runtimes --linux uit als u alle ondersteunde runtimes wilt zien.

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'NODE|14-lts' --deployment-local-git

Wanneer de web-app is gemaakt, toont de Azure CLI soortgelijke uitvoer als in het volgende voorbeeld:

Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "clientCertExclusionPaths": null,
  "clientCertMode": "Required",
  "cloningInfo": null,
  "containerSize": 0,
  "customDomainVerificationId": "54184270DF7B3B4BF30221B6303E789C324E4783C8DF1FBAA3D111FC72328CE9",
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

U hebt een lege web-app gemaakt, met Git-implementatie ingeschakeld.

Notitie

De URL van de externe Git wordt weergegeven in de eigenschap deploymentLocalGitUrl, met de indeling https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Sla deze URL op, want u hebt deze later nodig.

Een omgevingsvariabele configureren

De voorbeeldtoepassing is al geconfigureerd voor het gebruik van de MONGODB_URI omgevingsvariabele in config/datastores.js . In App Service injecteert u deze variabele met behulp van een app-instelling.

Gebruik de opdracht az webapp config appsettings set in Cloud Shell om de app-instellingen te definiëren.

In het volgende voorbeeld wordt de app-instelling MONGODB_URI in de Azure-app geconfigureerd. Vervang de tijdelijke aanduidingen <app-name> , <cosmosdb-name> en <cosmosdb-key> .

az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings MONGODB_URI='mongodb://<cosmosdb-name>:<cosmosdb-key>@<cosmosdb-name>.documents.azure.com:10250/todoapp' DEPLOYMENT_BRANCH='main'

Notitie

DEPLOYMENT_BRANCH is een speciale app-instelling die de implementatie-engine vertelt in welke Git-vertakking u implementeert in App Service.

Pushen naar Azure vanaf Git

  1. Omdat u de vertakking implementeert, moet u de standaardimplementatievertakking voor uw main App Service-app instellen main op (zie Implementatievertakking wijzigen). Stel in Cloud Shell DEPLOYMENT_BRANCH app-instelling in met de opdracht az webapp config appsettings set .

    az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'
    
  2. Voeg, eenmaal terug in het lokale terminalvenster, een externe Azure-instantie toe aan uw lokale Git-opslagplaats. Vervang <deploymentLocalGitUrl-from-create-step> door de URL van de externe Git-instantie die u hebt opgeslagen bij Een web-app maken.

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  3. Push naar de externe Azure-instantie om uw app te implementeren met de volgende opdracht. Wanneer Git Credential Manager u om referenties vraagt, geeft u de referenties op die u hebt gemaakt in Een implementatiegebruiker configureren, en niet de referenties die u gebruikt om u aan te melden bij de Azure-portal.

    git push azure main
    

    Het kan enkele minuten duren voor deze opdracht is uitgevoerd. De opdracht geeft informatie weer die lijkt op het volgende voorbeeld:

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 318 bytes | 318.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Updating branch 'main'.
remote: Updating submodules.
remote: Preparing deployment for commit id '4eb0ca7190'.
remote: Generating deployment script.
remote: Running deployment command...
remote: Handling node.js deployment.
remote: Creating app_offline.htm
remote: KuduSync.NET from: 'D:\home\site\repository' to: 'D:\home\site\wwwroot'
remote: Copying file: 'package.json'
remote: Deleting app_offline.htm
remote: Looking for app.js/server.js under site root.
remote: Using start-up script app.js
remote: Generated web.config.
.
.
.
remote: Deployment successful.
To https://<app-name>.scm.azurewebsites.net/<app-name>.git
 * [new branch]      main -> main

Tip

Tijdens de Git-implementatie wordt de implementatie-engine npm install --production uitgevoerd als onderdeel van de buildautomatisering.

  • Zoals gedefinieerd in , wordt het script opgehaald door en uitgevoerd om de productiebestanden voor Angular te genereren en te implementeren package.json postinstall in de map npm install ng build assets.
  • scripts in package.json kan hulpprogramma's gebruiken die zijn geïnstalleerd in node_modules/.bin . Omdat npm install ook is node_modules/.bin/ng geïnstalleerd, kunt u deze gebruiken om uw Angular-clientbestanden te implementeren. Dit npm-gedrag is precies hetzelfde in Azure App Service. Pakketten onder devDependencies in worden niet package.json geïnstalleerd. Elk pakket dat u nodig hebt in de productieomgeving moet worden verplaatst onder dependencies .

Als uw app de standaardautomatisering moet omzeilen en aangepaste automatisering moet uitvoeren, zie RunCret/Bower/Gulp.

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 347 bytes | 347.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Deploy Async
remote: Updating branch 'main'.
remote: Updating submodules.
remote: Preparing deployment for commit id 'f776be774a'.
remote: Repository path is /home/site/repository
remote: Running oryx build...
remote: Operation performed by Microsoft Oryx, https://github.com/Microsoft/Oryx
remote: You can report issues at https://github.com/Microsoft/Oryx/issues
remote: 
remote: Oryx Version: 0.2.20210420.1, Commit: 85c6e9278aae3980b86cb1d520aaad532c814ed7, ReleaseTagName: 20210420.1
remote: 
remote: Build Operation ID: |qwejn9R4StI=.5e8a3529_
remote: Repository Commit : f776be774a3ea8abc48e5ee2b5132c037a636f73
.
.
.
remote: Deployment successful.
remote: Deployment Logs : 'https://<app-name>.scm.azurewebsites.net/newui/jsonviewer?view_url=/api/deployments/a6fcf811136739f145e0de3be82ff195bca7a68b/log'
To https://<app-name>.scm.azurewebsites.net/<app-name>.git
   4f7e3ac..a6fcf81  main -> main

Tip

Tijdens de Git-implementatie wordt de implementatie-engine npm install uitgevoerd als onderdeel van de buildautomatisering.

  • Zoals gedefinieerd in , wordt het script opgehaald door en uitgevoerd om de productiebestanden voor Angular te genereren en te implementeren package.json postinstall in de map npm install ng build assets.
  • scripts in package.json kan hulpprogramma's gebruiken die zijn geïnstalleerd in node_modules/.bin . Omdat npm install ook is node_modules/.bin/ng geïnstalleerd, kunt u deze gebruiken om uw Angular-clientbestanden te implementeren. Dit npm-gedrag is precies hetzelfde in Azure App Service. Wanneer de automatisering van de build is voltooid, wordt de volledige voltooide opslagplaats gekopieerd naar de map /home/site/wwwroot waaruit uw app wordt gehost.

Als uw app de standaardautomatisering moet omzeilen en aangepaste automatisering moet uitvoeren, zie RunCret/Bower/Gulp.

Naar de Azure-app bladeren

Blader in de webbrowser naar de geïmplementeerde app.

https://<app-name>.azurewebsites.net 

Als u todo-items in de browser kunt maken en bekijken, heeft uw voorbeeld-app in Azure verbinding met de MongoDB-database (Cosmos DB).

MEAN-app die wordt uitgevoerd in Azure App Service

Gefeliciteerd! U voert een gegevensgestuurde Node.js-app uit in Azure App Service.

Gegevensmodel bijwerken en opnieuw implementeren

In deze stap wijzigt u het Todo-gegevensmodel en publiceert u de wijziging in Azure.

Het model aan de serverzijde bijwerken

In Sails.js is het wijzigen van het model aan de serverzijde en API-code net zo eenvoudig als het wijzigen van het gegevensmodel, omdatSails.js standaard al de algemene routes voor een model definieert.

Open api/models/Todo.js en voeg een kenmerk toe in uw lokale done opslagplaats. Als u klaar bent, ziet het schema er als volgt uit:

module.exports = {

  attributes: {
    value: {type: 'string'},
    done: {type: 'boolean', defaultsTo: false}
  },

};

De clientcode bijwerken

Er zijn drie bestanden die u moet wijzigen: het clientmodel, de HTML-sjabloon en het onderdeelbestand.

Open client/src/app/todo.ts en voeg een eigenschap done toe. Wanneer u klaar bent, ziet uw model er als volgende uit:

export class Todo {
    id!: String;
    value!: String;
    done!: Boolean;
}

Open client/src/app/app.component.html. Voeg net boven het enige element de volgende code toe om een selectievakje aan het begin van elk <span> todo-item toe te voegen:

<input class="form-check-input me-2" type="checkbox" [checked]="todo.done" (click)="toggleDone(todo.id, i)" [disabled]="isProcessing">

Open client/src/app/app.component.ts. Net boven de laatste afsluitende accolade ( } ), voegt u de volgende methode in. Deze wordt aangeroepen door de bovenstaande sjablooncode wanneer op het selectievakje wordt geklikt en de gegevens aan de serverzijde worden bijgewerkt.

toggleDone(id:any, i:any) {
  console.log("Toggled checkbox for " + id);
  this.isProcessing = true;
  this.Todos[i].done = !this.Todos[i].done;
  this.restService.updateTodo(id, this.Todos[i])
  .subscribe((res) => {
      console.log('Data updated successfully!');
      this.isProcessing = false;
    }, (err) => {
      console.log(err);
      this.Todos[i].done = !this.Todos[i].done;
  });
}

De wijzigingen lokaal testen

Compileer in het lokale terminalvenster de bijgewerkte Angular-clientcode met het buildscript dat is gedefinieerd in package.json .

npm run build

Test uw wijzigingen opnieuw node app.js --alter met . Omdat u het model aan de serverzijde hebt gewijzigd, kunt u met de vlag de gegevensstructuur in uw database --alter Sails.js Cosmos DB wijzigen.

node app.js --alter

Navigeer naar http://localhost:1337. U ziet nu een selectievakje vóór het todo-item. Wanneer u een selectievakje in- of uitcheckt, wordt Cosmos DB database in Azure bijgewerkt om aan te geven dat het todo-item is uitgevoerd.

Gegevens en gebruikersinterface 'Done' toegevoegd

Stop Node.js door in het terminalvenster Ctrl+C te typen.

Wijzigingen publiceren in Azure

Leg in het lokale terminalvenster uw wijzigingen vast in Git en push de codewijzigingen naar Azure.

git commit -am "added done field"
git push azure main

Zodra git push is voltooid, gaat u naar de Azure-app en probeert u de nieuwe functionaliteit uit.

In Azure gepubliceerde model- en databasewijzigingen

Als u eerder artikelen hebt toegevoegd, kunt u deze nog steeds zien. Bestaande gegevens in Cosmos DB zijn nog aanwezig. En uw updates aan het gegevensschema zijn nog intact.

Diagnostische logboeken streamen

Terwijl uw Node.js-toepassing in Azure App Service wordt uitgevoerd, kunt u de consolelogboeken doorgesluisd krijgen naar uw terminal. Op die manier krijgt u de dezelfde diagnostische berichten om toepassingsfouten op te sporen.

Gebruik voor het starten van logboekstreaming de opdracht az webapp log tail in de Cloud Shell.

az webapp log tail --name <app-name> --resource-group myResourceGroup

Nadat logboekstreaming is gestart, vernieuwt u de Azure-app in de browser om wat webverkeer te genereren. U ziet dat consolelogboeken nu worden doorgegeven aan uw terminal.

U kunt logboekstreaming op elk gewenst moment stoppen door te drukken op Ctrl+C.

Als u toegang wilt tot de consolelogboeken die worden gegenereerd binnen uw toepassingscode in de App Service, schakelt u diagnostische logboekregistratie in door de volgende opdracht in de Cloud Shell uit te voeren:

az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose

Mogelijk waarden voor --level zijn: Error, Warning, Info en Verbose. Elk hoger niveau omvat het vorige niveau. Bijvoorbeeld: Error omvat alleen foutberichten en Verbose omvat alle berichten.

Nadat diagnostische logboekregistratie is ingeschakeld, voert u de volgende opdracht uit om de logboekstream te zien:

az webapp log tail --resource-group <resource-group-name> --name <app-name>

Als u de consolelogboeken niet meteen ziet, probeert u het opnieuw na 30 seconden.

Notitie

U kunt ook de logboekbestanden van de browser inspecteren op https://<app-name>.scm.azurewebsites.net/api/logs/docker.

U kunt op elk gewenst moment Ctrl+C typen om te stoppen met logboekstreaming.

Uw Azure-app beheren

Ga naar de Azure-portal om de app te zien die u hebt gemaakt.

Klik in het linkermenu op App Services en klik op de naam van uw Azure-app.

Navigatie naar Azure-app in de portal

In de portal wordt standaard de pagina Overzicht van de app weergegeven. Deze pagina geeft u een overzicht van hoe uw app presteert. Hier kunt u ook algemene beheertaken uitvoeren, zoals bladeren, stoppen, starten, opnieuw opstarten en verwijderen. De tabbladen aan de linkerkant van de pagina tonen de verschillende configuratiepagina's die u kunt openen.

App Service-pagina in Azure Portal

Resources opschonen

In de voorgaande stappen hebt u Azure-resources in een resourcegroep gemaakt. Als u deze resources niet meer nodig denkt te hebben, verwijdert u de resourcegroep door de volgende opdracht in Cloud Shell uit te voeren:

az group delete --name myResourceGroup

Het kan een minuut duren voordat deze opdracht is uitgevoerd.

Volgende stappen

Wat u hebt geleerd:

  • Een MongoDB-database maken in Azure
  • Een Node.js-app verbinden met MongoDB
  • De app implementeren in Azure
  • Het gegevensmodel bijwerken en de app opnieuw implementeren
  • Logboeken vanaf Azure naar uw terminal streamen
  • De app in Azure Portal beheren

Ga door naar de volgende zelfstudie om te leren hoe u een aangepaste DNS-naam aan een web-app kunt toewijzen.

U kunt ook andere resources bekijken: