Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie bouwt u een Node.js-webtoepassing die verbinding maakt met Azure DocumentDB. De MongoDB-, Express-, React.js- Node.js -stack (MERN) is een populaire verzameling technologieën die worden gebruikt om veel moderne webtoepassingen te bouwen. Met Azure DocumentDB kunt u een nieuwe webtoepassing bouwen of een bestaande toepassing migreren met mongoDB-stuurprogramma's waarmee u al bekend bent. In deze handleiding leert u:
- Uw omgeving instellen
- De MERN-toepassing testen met een lokale MongoDB-container
- De MERN-toepassing testen met een cluster
- De MERN-toepassing implementeren in Azure App Service
Vereiste voorwaarden
Voor het voltooien van deze zelfstudie hebt u de volgende resources nodig:
Een Azure-abonnement
- Als u geen Azure-abonnement hebt, maakt u een gratis account
Een bestaand Azure DocumentDB-cluster
- Als u geen cluster hebt, maakt u een nieuw cluster
- Een GitHub-account met rechten voor GitHub Codespaces
De ontwikkelomgeving configureren
Een ontwikkelcontaineromgeving is beschikbaar met alle afhankelijkheden die nodig zijn om elke oefening in dit project te voltooien. U kunt de ontwikkelcontainer uitvoeren in GitHub Codespaces of lokaal met behulp van Visual Studio Code.
GitHub Codespaces voert een ontwikkelcontainer uit die wordt beheerd door GitHub met Visual Studio Code voor het web als de gebruikersinterface. Voor de eenvoudigste ontwikkelomgeving gebruikt u GitHub Codespaces zodat u de juiste ontwikkelhulpprogramma's en afhankelijkheden vooraf hebt geïnstalleerd om deze trainingsmodule te voltooien.
Belangrijk
Alle GitHub-accounts kunnen Codespaces elke maand maximaal 60 uur gratis gebruiken met twee kernexemplaren.
Start het proces om een nieuwe GitHub Codespace te maken op de
mainvertakking van deazure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-appGitHub-opslagplaats.Op de Codespace maken-pagina, controleer de configuratie-instellingen van de codespace en selecteer vervolgens Nieuwe codespace maken.
Schermopname van het bevestigingsscherm voordat u een nieuwe coderuimte aanmaakt.
Wacht tot de codespace is gestart. Dit opstartproces kan enkele minuten duren.
Open een nieuwe terminal in de codespace.
Controleer de versies van de hulpprogramma's die u in deze zelfstudie gebruikt.
docker --version node --version npm --version az --versionOpmerking
Voor deze zelfstudie zijn de volgende versies van elk hulpprogramma vereist, die vooraf zijn geïnstalleerd in uw omgeving:
Tool Versie Docker ≥ 20.10.0 Node.js ≥ 18.0150 npm ≥ 9.5.0 Azure-opdrachtregelinterface (CLI) ≥ 2.46.0 Sluit de terminal.
De resterende stappen in deze zelfstudie vinden plaats in de context van deze ontwikkelingscontainer.
De API van de MERN-toepassing testen met de MongoDB-container
Begin met het uitvoeren van de API van de voorbeeldtoepassing met de lokale MongoDB-container om te controleren of de toepassing werkt.
Voer een MongoDB-container uit met behulp van Docker en publiceer de gebruikelijke MongoDB-poort (
27017).docker pull mongo:6.0 docker run --detach --publish 27017:27017 mongo:6.0Selecteer in de zijbalk de MongoDB-extensie.
Voeg een nieuwe verbinding toe aan de MongoDB-extensie met behulp van de verbindingsreeks
mongodb://localhost.
Zodra de verbinding tot stand is gebracht, opent u het bestand data/products.mongodb playground.
Selecteer het pictogram Alles uitvoeren om het script uit te voeren.
De playground-uitvoering moet resulteren in een lijst met documenten in de lokale MongoDB-collectie. Hier is een ingekort voorbeeld van de uitvoer.
[ { "_id": { "$oid": "640a146e89286b79b6628eef" }, "name": "Confira Watch", "category": "watches", "price": 105 }, { "_id": { "$oid": "640a146e89286b79b6628ef0" }, "name": "Diannis Watch", "category": "watches", "price": 98, "sale": true }, ... ]Opmerking
De object-id's (
_id) worden willekeurig gegenereerd en verschillen van deze afgekapte voorbeelduitvoer.Maak in de server/ map een nieuw .env-bestand .
Voeg in het bestand server/.env een omgevingsvariabele toe voor deze waarde:
Omgevingsvariabele Waarde CONNECTION_STRINGDe verbindingsreeks met het Azure DocumentDB-cluster. Gebruik voorlopig mongodb://localhost:27017?directConnection=true.CONNECTION_STRING=mongodb://localhost:27017?directConnection=trueWijzig de context van de terminal in de server/ map.
cd serverInstalleer de afhankelijkheden van Node Package Manager (npm).
npm installStart de Node.js & Express-applicatie.
npm startDe API opent automatisch een browservenster om te controleren of er een matrix met productdocumenten wordt geretourneerd.
Sluit het extra browsertabblad/-venster.
Sluit de terminal.
De MERN-toepassing testen met het Azure DocumentDB-cluster
Laten we nu controleren of de toepassing naadloos werkt met Azure DocumentDB. Vul voor deze taak het vooraf bestaande cluster in met seed-gegevens met behulp van de MongoDB-shell en werk vervolgens de verbindingsreeks van de API bij.
Meld u aan bij Azure Portal (https://portal.azure.com).
Navigeer naar de bestaande Azure DocumentDB-clusterpagina.
Kies in het navigatiemenu op de pagina van de Azure DocumentDB-cluster de optie verbindingsreeksen.
Noteer de waarde uit het veld Verbindingsreeks .
Belangrijk
De verbindingsreeks in de portal bevat geen gebruikersnaam- en wachtwoordwaarden. U moet de
<user>en<password>plaatsaanduidingen vervangen door de referenties die u hebt gebruikt toen u het cluster oorspronkelijk aanmaakte.Open een nieuwe terminal in uw IDE (Integrated Development Environment).
Start de MongoDB-shell met behulp van de
mongoshopdracht en de verbindingsreeks die u eerder hebt vastgelegd. Zorg ervoor dat u de<user>en<password>plaatsaanduidingen vervangt door de referenties die u hebt gebruikt toen u het cluster oorspronkelijk maakte.mongosh "<mongodb-cluster-connection-string>"Opmerking
Mogelijk moet u specifieke waarden voor de verbindingsreeks coderen. In dit voorbeeld is
msdocs-azure-documentdb-tutorialde naam van het cluster, de gebruikersnaam enclusteradminhet wachtwoordP@ssw.rd. In het wachtwoord moet het@teken worden gecodeerd met behulp van%40. Hier ziet u een voorbeeld van een verbindingsreeks met de juiste codering van het wachtwoord.CONNECTION_STRING=mongodb+srv://clusteradmin:P%40ssw.rd@msdocs-azure-documentdb-tutorial.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000Voer in de shell de volgende opdrachten uit om uw database te maken, uw verzameling te maken en te seeden met startergegevens.
use('cosmicworks'); db.products.drop(); db.products.insertMany([ { name: "Confira Watch", category: "watches", price: 105.00 }, { name: "Diannis Watch", category: "watches", price: 98.00, sale: true }, { name: "Sterse Gloves", category: "gloves", price: 42.00 }, { name: "Peache Sunglasses", category: "eyewear", price: 32.00, sale: false, sizes: [ "S", "M", "L" ] }, { name: "Icento Pack", category: "bags", price: 58.00 }, { name: "Iroowl Bracelet", category: "watches", price: 66.00 }, { name: "Glaark Bag", category: "bags", price: 56.00, sale: true }, { name: "Windry Mittens", category: "gloves", price: 35.00 }, { name: "Tuvila Hat", category: "hats", price: 120.00 }, { name: "Klinto Hat", category: "hats", subcategory: "hats-beanies", price: 65.00 } ]); db.products.find({});De opdrachten moeten resulteren in een lijst met documenten in de lokale MongoDB-verzameling. Hier is een verkort voorbeeld van de uitvoer.
[ { "_id": { "$oid": "640a146e89286b79b6628eef" }, "name": "Confira Watch", "category": "watches", "price": 105 }, { "_id": { "$oid": "640a146e89286b79b6628ef0" }, "name": "Diannis Watch", "category": "watches", "price": 98, "sale": true }, ... ]Opmerking
De object-id's (
_id) worden willekeurig gegenereerd en verschillen van deze afgekapte voorbeelduitvoer.Sluit de MongoDB-shell af.
exitMaak in de client/ map een nieuw .env-bestand .
Voeg in het bestand client/.env een omgevingsvariabele toe voor deze waarde:
Omgevingsvariabele Waarde CONNECTION_STRINGDe verbindingsreeks met het Azure DocumentDB-cluster. Gebruik dezelfde verbindingsreeks die u met de mongo-shell hebt gebruikt. CONNECTION_STRING=<your-connection-string>Controleer of de toepassing de databaseservice gebruikt door de context van de terminal te wijzigen in de server/ map, afhankelijkheden van Node Package Manager (npm) te installeren en vervolgens de toepassing te starten.
cd server npm install npm startDe API opent automatisch een browservenster om te controleren of er een matrix met productdocumenten wordt geretourneerd.
Sluit het extra browsertabblad/-venster. Sluit vervolgens de terminal.
De MERN-toepassing implementeren in Azure App Service
Bewijzen dat de toepassing end-to-end werkt door de service en client te implementeren in Azure App Service. Gebruik geheimen in de web-apps om omgevingsvariabelen op te slaan met referenties en API-eindpunten.
Open in uw IDE (Integrated Development Environment) een nieuwe terminal.
Maak een shellvariabele voor de naam van de bestaande resourcegroep met de naam resourceGroupName.
# Variable for resource group name resourceGroupName="<existing-resource-group>"Maak shellvariabelen voor de twee web-app serverAppName en clientAppName.
# Variable for randomnly generated suffix let suffix=$RANDOM*$RANDOM # Variable for web app names with a randomnly generated suffix serverAppName="server-app-$suffix" clientAppName="client-app-$suffix"Als u dat nog niet hebt gedaan, meldt u zich aan bij de Azure CLI met behulp van de
az login --use-device-codeopdracht.Verander de huidige werkmap naar het server/ pad.
cd serverMaak een nieuwe web-app voor het serveronderdeel van de MERN-toepassing met
az webapp up.az webapp up \ --resource-group $resourceGroupName \ --name $serverAppName \ --sku F1 \ --runtime "NODE|18-lts"Maak een nieuwe verbindingsreeksinstelling voor de serverweb-app die de naam
CONNECTION_STRINGmetaz webapp config connection-string setheeft. Gebruik dezelfde waarde voor de verbindingsreeks die u eerder in deze zelfstudie hebt gebruikt met de MongoDB-shell en het .env-bestand .az webapp config connection-string set \ --resource-group $resourceGroupName \ --name $serverAppName \ --connection-string-type custom \ --settings "CONNECTION_STRING=<mongodb-connection-string>"Verkrijg de URI van de serverwebapplicatie met
az webapp showen sla deze op in een shellvariabele met de naam d serverUri.serverUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $serverAppName \ --query hostNames[0] \ --output tsv)Gebruik het
open-clipakket en de opdracht van NuGet in combinatie metnpxom een browservenster te openen met behulp van de URI voor de server-webapplicatie. Controleer of de server-app uw JSON-matrixgegevens uit het cluster retourneert.npx open-cli "https://$serverUri/products" --yesAanbeveling
Soms kunnen implementaties asynchroon worden voltooid. Als u niet ziet wat u verwacht, wacht u nog een minuut en vernieuwt u het browservenster.
Wijzig de werkmap naar het pad client/.
cd ../clientMaak een nieuwe web-app voor het clientonderdeel van de MERN-toepassing met
az webapp up.az webapp up \ --resource-group $resourceGroupName \ --name $clientAppName \ --sku F1 \ --runtime "NODE|18-lts"Maak een nieuwe app-instelling voor de client-webapp genaamd
REACT_APP_API_ENDPOINTmetaz webapp config appsettings set. Gebruik het server-API-eindpunt dat is opgeslagen in de serverUri-shellvariabele .az webapp config appsettings set \ --resource-group $resourceGroupName \ --name $clientAppName \ --settings "REACT_APP_API_ENDPOINT=https://$serverUri"Gebruik
az webapp showom de URI voor de clientwebapp op te halen en sla deze op in een shell-variabele met de naam clientUri.clientUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $clientAppName \ --query hostNames[0] \ --output tsv)Gebruik het
open-clipakket en de NuGet-opdracht omnpxeen browservenster te openen met behulp van de URI voor de clientweb-app. Controleer of de client-app gegevens uit de API van de server-app rendert.npx open-cli "https://$clientUri" --yesAanbeveling
Soms kunnen implementaties asynchroon worden voltooid. Als u niet ziet wat u verwacht, wacht u nog een minuut en vernieuwt u het browservenster.
Sluit de terminal.
De hulpbronnen opschonen
Wanneer je in je eigen abonnement werkt, is het aan het einde van een project een goed idee om de resources die je niet meer nodig hebt te verwijderen. Ressources die actief blijven draaien, kunnen geld kosten. U kunt resources afzonderlijk verwijderen, maar u kunt ook de resourcegroep verwijderen als u de volledige resourceset wilt verwijderen.
Als u de hele resourcegroep wilt verwijderen, gebruikt u
az group delete.az group delete \ --name $resourceGroupName \ --yesControleer of de resourcegroep is verwijderd met behulp van
az group list.az group list
Ontwikkelomgeving opschonen
Mogelijk wilt u uw ontwikkelomgeving ook opschonen of teruggaan naar de typische status.
Als u de GitHub Codespaces-omgeving verwijdert, zorgt u ervoor dat u de hoeveelheid gratis rechten per kernuren kunt maximaliseren die u voor uw account krijgt.
Meld u aan bij het GitHub Codespaces-dashboard (https://github.com/codespaces).
Zoek uw huidige ontwikkelingscontainer afkomstig uit de
azure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-appGitHub-repository.
Open het contextmenu voor de coderuimte en selecteer Verwijderen.
Schermopname van het contextmenu voor één coderuimte met de optie Verwijderen gemarkeerd.
Schermopname van de menuoptie om een nieuwe terminal te openen.