Quickstart: Azure Cosmos DB gebruiken voor table 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 binnen 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-table-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 npm, als pakket @azure/data-tables
.
Open een terminal en navigeer naar de
/src/ts
map.cd ./src/ts
Als dit nog niet is geïnstalleerd, installeert u het
@azure/data-tables
pakket met behulp vannpm install
.npm install --save @azure/data-tables
Open en controleer het bestand src/ts/package.json om te controleren of de
@azure/data-tables
vermelding bestaat.
Open een terminal en navigeer naar de
/src/js
map.cd ./src/js
Als dit nog niet is geïnstalleerd, installeert u het
@azure/data-tables
pakket met behulp vannpm install
.npm install --save @azure/data-tables
Open en controleer het bestand src/js/package.json om te controleren of de
@azure/data-tables
vermelding bestaat.
Objectmodel
Name | Beschrijving |
---|---|
TableServiceClient |
Dit type is het primaire clienttype en wordt gebruikt voor het beheren van metagegevens of databases voor het hele account. |
TableClient |
Dit type vertegenwoordigt de client voor een tabel in het account. |
Codevoorbeelden
- De client verifiëren
- Een tabel ophalen
- Een entiteit maken
- Een entiteit ophalen
- Query uitvoeren op entiteiten
De voorbeeldcode in de sjabloon maakt gebruik van een tabel met de naam cosmicworks-products
. De cosmicworks-products
tabel bevat details zoals naam, categorie, hoeveelheid, prijs, een unieke id en een verkoopvlag voor elk product. De container gebruikt een unieke id* als rijsleutel en categorie als partitiesleutel.
De client verifiëren
In dit voorbeeld wordt een nieuw exemplaar van het TableServiceClient
type gemaakt.
let client: TableServiceClient = new TableServiceClient("<azure-cosmos-db-table-account-endpoint>", "<credential>");
const credential = new DefaultAzureCredential();
let client = new TableServiceClient("<azure-cosmos-db-table-account-endpoint>", credential);
Een tabel ophalen
In dit voorbeeld wordt een exemplaar van het TableClient
type gemaakt met behulp van de GetTableClient
functie van het TableServiceClient
type.
let table: TableClient = new TableClient("<azure-cosmos-db-table-account-endpoint>", "<azure-cosmos-db-table-name>", credential);
let table = new TableClient("<azure-cosmos-db-table-account-endpoint>", "<azure-cosmos-db-table-name>", credential);
Een entiteit maken
De eenvoudigste manier om een nieuwe entiteit in een tabel te maken, is door een nieuwe interface af te leiden van TableEntity
en vervolgens een nieuw object van dat type te maken.
export interface Product extends TableEntity {
name: string;
quantity: number;
price: number;
clearance: boolean;
}
const entity: Product = {
rowKey: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
partitionKey: 'gear-surf-surfboards',
name: 'Yamba Surfboard',
quantity: 12,
price: 850.00,
clearance: false
};
De eenvoudigste manier om een nieuw item in een tabel te maken, is door een JSON-object te maken.
const entity = {
rowKey: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
partitionKey: 'gear-surf-surfboards',
name: 'Yamba Surfboard',
quantity: 12,
price: 850.00,
clearance: false
};
Maak een entiteit in de tabel met behulp van de upsertEntity
methode van het TableService
exemplaar.
await table.upsertEntity<Product>(entity, "Replace");
await table.upsertEntity(entity, "Replace");
Een entiteit ophalen
U kunt een specifieke entiteit ophalen uit een tabel met behulp van de getEntity
methode, de rijsleutel voor de entiteit en de partitiesleutel van de entiteit.
const response: GetTableEntityResponse<TableEntityResult<Product>> = await table.getEntity<Product>(partitionKey, rowKey);
const entity: Product = response as Product;
const entity = await table.getEntity(partitionKey, rowKey);
Query uitvoeren op entiteiten
Nadat u een entiteit hebt ingevoegd, kunt u ook een query uitvoeren om alle entiteiten op te halen die overeenkomen met een specifiek filter met behulp van listEntities
een OData-filter.
const partitionKey: string = 'gear-surf-surfboards';
const filter: string = `PartitionKey eq '${partitionKey}'`
const queryOptions: TableEntityQueryOptions = { filter: filter }
const entities: PagedAsyncIterableIterator<TableEntityResult<Product>, TableEntityResultPage<Product>> = table.listEntities<Product>({ queryOptions: queryOptions });
const partitionKey = 'gear-surf-surfboards';
const entities = table.listEntities({
queryOptions: {
filter: `PartitionKey eq '${partitionKey}'`
}
});
Parseren van de gepagineerde resultaten van de query met behulp van een asynchrone for await
lus op de gepagineerde set entities
.
for await(const entity of entities) {
// Do something
}
for await(const entity of entities) {
// Do something
}
Resources opschonen
Wanneer u de voorbeeldtoepassing of resources niet meer nodig hebt, verwijdert u de bijbehorende implementatie en alle resources.
azd down