Partager via


Démarrage rapide : Utiliser Azure Cosmos DB for Table avec le kit Azure SDK pour Node.js

Dans ce guide de démarrage rapide, vous déployez une application Azure Cosmos DB for Table de base en utilisant le kit Azure SDK pour Node.js. Azure Cosmos DB for Table est un magasin de données sans schéma qui permet aux applications de stocker des données de table structurées dans le cloud. Vous allez apprendre à créer des tables et des lignes, et à effectuer des tâches de base dans votre ressource Azure Cosmos DB à l’aide du kit Azure SDK pour Node.js.

Documentation de référence sur l’API | Code source de la bibliothèque | Package (npm) | Azure Developer CLI

Prérequis

  • Azure Developer CLI
  • Docker Desktop
  • Node.js 22 ou version ultérieure

Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.

Initialiser le projet

Utilisez l’interface Azure Developer CLI (azd) pour créer un compte Azure Cosmos DB for Table et déployer un exemple d’application conteneurisé. L’exemple d’application utilise la bibliothèque de client pour gérer, créer, lire et interroger des exemples de données.

  1. Ouvrez un terminal dans un répertoire vide.

  2. Si vous n’êtes pas encore authentifié, authentifiez-vous auprès d’Azure Developer CLI à l’aide de azd auth login. Suivez les étapes spécifiées par l’outil pour vous authentifier auprès de l’interface CLI à l’aide de vos informations d’identification Azure préférées.

    azd auth login
    
  3. Utilisez azd init pour initialiser le projet.

    azd init --template cosmos-db-table-nodejs-quickstart
    
  4. Lors de l’initialisation, configurez un nom d’environnement unique.

  5. Déployez le compte Azure Cosmos DB en utilisant azd up. Les modèles Bicep déploient également un exemple d’application web.

    azd up
    
  6. Pendant le processus d’approvisionnement, sélectionnez votre abonnement, l’emplacement souhaité et le groupe de ressources cible. Attendez la fin du processus de provisionnement. Le processus peut prendre environ cinq minutes.

  7. Une fois le provisionnement de vos ressources Azure effectué, une URL vers l’application web en cours d’exécution est incluse dans la sortie.

    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. Utilisez l’URL dans la console pour accéder à votre application web dans le navigateur. Observez la sortie de l’application en cours d’exécution.

Capture d’écran de l’application web en cours d’exécution.

Capture d’écran de l’application web en cours d’exécution.

Installer la bibliothèque de client

La bibliothèque cliente est disponible via npm, en tant que package @azure/data-tables.

  1. Ouvrez un terminal, puis accédez au dossier /src/ts.

    cd ./src/ts
    
  2. S’il n’est pas déjà installé, installez le package @azure/data-tables à l’aide de npm install.

    npm install --save @azure/data-tables
    
  3. Ouvrez et examinez le fichier src/ts/package.json pour valider l'existence de l'entrée @azure/data-tables.

  1. Ouvrez un terminal, puis accédez au dossier /src/js.

    cd ./src/js
    
  2. S’il n’est pas déjà installé, installez le package @azure/data-tables à l’aide de npm install.

    npm install --save @azure/data-tables
    
  3. Ouvrez et examinez le fichier src/js/package.json pour valider l'existence de l'entrée @azure/data-tables.

Modèle objet

Nom Description
TableServiceClient Il s’agit du type client principal utilisé pour gérer les métadonnées ou les bases de données à l’échelle du compte.
TableClient Ce type représente le client d’une table dans le compte.

Exemples de code

L’exemple de code du modèle utilise une table nommée cosmicworks-products. La table cosmicworks-products contient des détails tels que le nom, la catégorie, la quantité, le prix, un identificateur unique et un indicateur de vente pour chaque produit. Le conteneur utilise un identificateur unique* en tant que clé de ligne, et une catégorie en tant que clé de partition.

Authentifier le client

Cet exemple crée une instance de type TableServiceClient.

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);

Obtenir une table

Cet exemple crée une instance de type TableClient à l’aide de la fonction GetTableClient de type TableServiceClient.

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);

Créer une entité

Le moyen le plus simple de créer une entité dans une table consiste à dériver une nouvelle interface de TableEntity, puis à créer un objet de ce type.

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
};

Le moyen le plus simple de créer un élément dans une table consiste à générer un objet JSON.

const entity = {
    rowKey: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
    partitionKey: 'gear-surf-surfboards',
    name: 'Yamba Surfboard',
    quantity: 12,
    price: 850.00,
    clearance: false
};

Créez une entité dans la table en utilisant la méthode upsertEntity de l’instance TableService.

await table.upsertEntity<Product>(entity, "Replace"); 
await table.upsertEntity(entity, "Replace");

Obtenir une entité

Vous pouvez récupérer une entité spécifique d’une table en utilisant la méthode getEntity, la clé de ligne de l’entité et la clé de partition de l’entité.

const response: GetTableEntityResponse<TableEntityResult<Product>> = await table.getEntity<Product>(partitionKey, rowKey);

const entity: Product = response as Product;
const entity = await table.getEntity(partitionKey, rowKey);

Interroger des entités

Après avoir inséré une entité, vous pouvez également exécuter une requête pour obtenir toutes les entités qui correspondent à un filtre spécifique en utilisant listEntities avec un filtre OData.

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}'`
    }
});

Analysez les résultats paginés de la requête à l’aide d’une boucle de for await asynchrone sur l’ensemble paginé de entities.

for await(const entity of entities) {
    // Do something
}
for await(const entity of entities) {
    // Do something
}

Nettoyer les ressources

Lorsque vous n’avez plus besoin de l’exemple d’application ou de ressources, supprimez le déploiement correspondant et toutes les ressources.

azd down