Quickstart: Azure Cosmos DB for NoSQL-bibliotheek voor Node.js

VAN TOEPASSING OP: NoSQL

Ga aan de slag met de Azure Cosmos DB for NoSQL-clientbibliotheek voor Node.js om query's uit te voeren op gegevens in uw containers en algemene bewerkingen uit te voeren op afzonderlijke items. Volg deze stappen om een minimale oplossing in uw omgeving te implementeren met behulp van de Azure Developer CLI.

API-referentiedocumentatiebibliotheek | broncodepakket | (npm) | Azure Developer CLI

Vereisten

Instellen

Implementeer de ontwikkelcontainer van dit project in uw omgeving. Gebruik vervolgens de Azure Developer CLI (azd) om een Azure Cosmos DB for NoSQL-account te maken en een containervoorbeeldtoepassing te implementeren. De voorbeeldtoepassing maakt gebruik van de clientbibliotheek voor het beheren, maken, lezen en opvragen van voorbeeldgegevens.

Openen in GitHub Codespaces

Openen in Dev-container

Belangrijk

GitHub-accounts bevatten gratis rechten voor opslag en kernuren. Zie inbegrepen opslag- en kernuren voor GitHub-accounts voor meer informatie.

  1. Open een terminal in de hoofdmap van het project.

  2. Verifiëren bij de Azure Developer CLI met behulp van azd auth login. Volg de stappen die door het hulpprogramma zijn opgegeven om te verifiëren bij de CLI met behulp van uw favoriete Azure-referenties.

    azd auth login
    
  3. Gebruik azd init dit om het project te initialiseren.

    azd init
    
  4. Configureer tijdens de initialisatie een unieke omgevingsnaam.

    Tip

    De omgevingsnaam wordt ook gebruikt als de naam van de doelresourcegroep. Voor deze quickstart kunt u overwegen .msdocs-cosmos-db

  5. Implementeer het Azure Cosmos DB-account met behulp van azd up. De Bicep-sjablonen implementeren ook een voorbeeldwebtoepassing.

    azd up
    
  6. Selecteer tijdens het inrichtingsproces uw abonnement en gewenste locatie. Wacht tot het inrichtingsproces is voltooid. Het proces kan ongeveer vijf minuten duren.

  7. Zodra het inrichten van uw Azure-resources is voltooid, wordt er een URL naar de actieve webtoepassing opgenomen in de uitvoer.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Gebruik de URL in de console om naar uw webtoepassing in de browser te navigeren. Bekijk de uitvoer van de actieve app.

    Schermopname van de actieve webtoepassing.

De clientbibliotheek installeren

De clientbibliotheek is beschikbaar via het Node Pakketbeheer, als pakket@azure/cosmos.

  1. Open een terminal en navigeer naar de /src map.

    cd ./src
    
  2. Als dit nog niet is geïnstalleerd, installeert u het @azure/cosmos pakket met behulp van npm install.

    npm install --save @azure/cosmos
    
  3. Installeer ook het @azure/identity pakket als dat nog niet is geïnstalleerd.

    npm install --save @azure/identity
    
  4. Open en controleer het src/package.json-bestand om te controleren of de azure-cosmos en azure-identity beide vermeldingen bestaan.

Objectmodel

Name Beschrijving
CosmosClient Deze klasse is de primaire clientklasse en wordt gebruikt voor het beheren van metagegevens of databases voor het hele account.
Database Deze klasse vertegenwoordigt een database binnen het account.
Container Deze klasse wordt voornamelijk gebruikt om lees-, update- en verwijderbewerkingen uit te voeren op de container of de items die zijn opgeslagen in de container.
PartitionKey Deze klasse vertegenwoordigt een logische partitiesleutel. Deze klasse is vereist voor veel algemene bewerkingen en query's.
SqlQuerySpec Deze interface vertegenwoordigt een SQL-query en eventuele queryparameters.

Codevoorbeelden

De voorbeeldcode in de sjabloon maakt gebruik van een database met de naam cosmicworks en container.products De products container bevat details zoals naam, categorie, hoeveelheid, een unieke id en een verkoopvlag voor elk product. De container gebruikt de /category eigenschap als een logische partitiesleutel.

De client verifiëren

Toepassingsaanvragen voor de meeste Azure-services moeten worden geautoriseerd. Gebruik het DefaultAzureCredential type als voorkeursmethode om een wachtwoordloze verbinding tussen uw toepassingen en Azure Cosmos DB for NoSQL te implementeren. DefaultAzureCredential ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt.

Belangrijk

U kunt aanvragen voor Azure-services ook rechtstreeks autoriseren met behulp van wachtwoorden, verbindingsreeks s of andere referenties. Deze aanpak moet echter met voorzichtigheid worden gebruikt. Ontwikkelaars moeten ijverig zijn om deze geheimen nooit zichtbaar te maken op een onbeveiligde locatie. Iedereen die toegang krijgt tot het wachtwoord of de geheime sleutel, kan zich verifiëren bij de databaseservice. DefaultAzureCredential biedt verbeterde beheer- en beveiligingsvoordelen ten opzichte van de accountsleutel om verificatie zonder wachtwoord mogelijk te maken zonder het risico dat sleutels worden opgeslagen.

In dit voorbeeld wordt een nieuw exemplaar van het CosmosClient type gemaakt en wordt geverifieerd met behulp van een DefaultAzureCredential exemplaar.

const credential = new DefaultAzureCredential();

const client = new CosmosClient({
    endpoint,
    aadCredentials: credential
});

Een database ophalen

Gebruik client.database deze om de bestaande database met de naam cosmicworksop te halen.

const database = client.database('cosmicworks');

Een container ophalen

Haal de bestaande products container op met behulp van database.container.

const container = database.container('products');

Een item maken

Bouw een nieuw object met alle leden die u in JSON wilt serialiseren. In dit voorbeeld heeft het type een unieke id en velden voor categorie, naam, hoeveelheid, prijs en verkoop. Maak een item in de container met behulp van container.items.upsert. Met deze methode wordt het item effectief vervangen als het al bestaat.

var item = {
    'id': '70b63682-b93a-4c77-aad2-65501347265f',
    'category': 'gear-surf-surfboards',
    'name': 'Yamba Surfboard',
    'quantity': 12,
    'price': 850.00,
    'clearance': false
};

var response = await container.items.upsert(item);

Een item lezen

Voer een puntleesbewerking uit met behulp van zowel de unieke id (id) als de partitiesleutelvelden. Gebruik container.item dit om een aanwijzer naar een item te krijgen en item.read om het specifieke item efficiënt op te halen.

var id = '70b63682-b93a-4c77-aad2-65501347265f';
var partitionKey = 'gear-surf-surfboards';

var response = await container.item(id, partitionKey).read();
var read_item = response.resource;

Query-items

Voer een query uit op meerdere items in een container met behulp van container.items.query. Zoek alle items in een opgegeven categorie met behulp van deze geparameteriseerde query:

SELECT * FROM products p WHERE p.category = @category

Haal alle resultaten van de query op met behulp van query.fetchAll. Doorloop de resultaten van de query.

const querySpec = {
    query: 'SELECT * FROM products p WHERE p.category = @category',
    parameters: [
        {
            name: '@category',
            value: 'gear-surf-surfboards'
        }
    ]
};

var response = await container.items.query(querySpec).fetchAll();
for (var item of response.resources) {

}

Volgende stap