Quickstart: Azure Cosmos DB for NoSQL gebruiken met Azure SDK voor Node.js
In deze quickstart implementeert u een eenvoudige Azure Cosmos DB for Table-toepassing met behulp van de Azure SDK voor Node.js. Azure Cosmos DB for Table is een schemaloos gegevensarchief waarmee toepassingen gestructureerde tabelgegevens in de cloud kunnen opslaan. U leert hoe u tabellen, rijen en basistaken in uw Azure Cosmos DB-resource maakt met behulp van de Azure SDK voor Node.js.
API-referentiedocumentatiebibliotheek | broncodepakket | (npm) | Azure Developer CLI
Vereisten
- Azure Developer CLI
- Docker Desktop
- Node.js 22 of hoger
Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
Het project initialiseren
Gebruik de Azure Developer CLI (azd
) om een Azure Cosmos DB for Table-account te maken en een in een container geplaatste voorbeeldtoepassing te implementeren. De voorbeeldtoepassing maakt gebruik van de clientbibliotheek voor het beheren, maken, lezen en opvragen van voorbeeldgegevens.
Open een terminal in een lege map.
Als u nog niet bent geverifieerd, moet u zich 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
Gebruik
azd init
dit om het project te initialiseren.azd init --template cosmos-db-nosql-nodejs-quickstart
Configureer tijdens de initialisatie een unieke omgevingsnaam.
Implementeer het Azure Cosmos DB-account met behulp van
azd up
. De Bicep-sjablonen implementeren ook een voorbeeldwebtoepassing.azd up
Selecteer tijdens het inrichtingsproces uw abonnement, gewenste locatie en doelresourcegroep. Wacht tot het inrichtingsproces is voltooid. Het proces kan ongeveer vijf minuten duren.
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.
Gebruik de URL in de console om naar uw webtoepassing in de browser te navigeren. Bekijk de uitvoer van de actieve app.
De clientbibliotheek installeren
De clientbibliotheek is beschikbaar via het Node Pakketbeheer, als pakket@azure/cosmos
.
Open een terminal en navigeer naar de
/src
map.cd ./src
Als dit nog niet is geïnstalleerd, installeert u het
@azure/cosmos
pakket met behulp vannpm install
.npm install --save @azure/cosmos
Installeer ook het
@azure/identity
pakket als dat nog niet is geïnstalleerd.npm install --save @azure/identity
Open en controleer het src/package.json-bestand om te controleren of de
azure-cosmos
enazure-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 client verifiëren
- Een database ophalen
- Een container ophalen
- Een item maken
- Een item ophalen
- Query's uitvoeren op items
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
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({
'<azure-cosmos-db-nosql-account-endpoint>',
aadCredentials: credential
});
const credential: TokenCredential = new DefaultAzureCredential();
const client = new CosmosClient({
'<azure-cosmos-db-nosql-account-endpoint>',
aadCredentials: credential
});
Een database ophalen
Gebruik client.database
deze om de bestaande database met de naam cosmicworks
op te halen.
const database = client.database('cosmicworks');
const database: Database = client.database('cosmicworks');
Een container ophalen
Haal de bestaande products
container op met behulp van database.container
.
const container = database.container('products');
const container: 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.
const item = {
'id': 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
'category': 'gear-surf-surfboards',
'name': 'Yamba Surfboard',
'quantity': 12,
'price': 850.00,
'clearance': false
};
let response = await container.items.upsert(item);
const item: Product = {
'id': 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
'category': 'gear-surf-surfboards',
'name': 'Yamba Surfboard',
'quantity': 12,
'price': 850.00,
'clearance': false
};
let response: ItemResponse<Product> = await container.items.upsert<Product>(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.
const id = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb';
const partitionKey = 'gear-surf-surfboards';
let response = await container.item(id, partitionKey).read();
let read_item = response.resource;
const id = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb';
const partitionKey = 'gear-surf-surfboards';
let response: ItemResponse<Product> = await container.item(id, partitionKey).read<Product>();
let read_item: Product = 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'
}
]
};
let response = await container.items.query(querySpec).fetchAll();
for (let item of response.resources) {
// Do something
}
const querySpec: SqlQuerySpec = {
query: 'SELECT * FROM products p WHERE p.category = @category',
parameters: [
{
name: '@category',
value: 'gear-surf-surfboards'
}
]
};
let response: FeedResponse<Product> = await container.items.query<Product>(querySpec).fetchAll();
for (let item of response.resources) {
// Do something
}
Resources opschonen
Wanneer u de voorbeeldtoepassing of resources niet meer nodig hebt, verwijdert u de bijbehorende implementatie en alle resources.
azd down