Azure Tables-clientbibliotheek voor JavaScript - versie 13.2.2

Azure Tables is een cloudservice die gestructureerde NoSQL-gegevens opslaat en een sleutel-/kenmerkarchief biedt met een schemaloos ontwerp. Table Storage biedt ontwikkelaars flexibiliteit en schaalbaarheid met de beste onderdelen van de Azure-cloud.

Gebruik de clientbibliotheek voor het volgende:

  • Tabellen maken/verwijderen
  • Entiteiten opvragen/maken/lezen/bijwerken/verwijderen

Azure Cosmos DB biedt een Table-API voor toepassingen die zijn geschreven voor Azure Table Storage en die premium-mogelijkheden nodig hebben, zoals:

  • Kant-en-klare wereldwijde distributie.
  • Speciale doorvoer overal ter wereld.
  • Latentie van slechts enkele milliseconden op het 99e percentiel.
  • Gegarandeerde hoge beschikbaarheid.
  • Automatische secundaire indexering.
  • De Azure Tables-clientbibliotheek kan naadloos worden gericht op Azure Table Storage- of Azure Cosmos DB-tabelservice-eindpunten zonder codewijzigingen.

Belangrijke koppelingen:

Aan de slag

Vereisten

Momenteel ondersteunde omgevingen:

  • LTS-versies van Node.js
  • Nieuwste versies van Safari, Chrome, Edge en Firefox

U moet een Azure-abonnement en een opslagaccount of een Azure CosmosDB-database hebben om dit pakket te kunnen gebruiken.

Installeer het pakket @azure/data-tables

De beste manier om de Azure Tables-clientbibliotheek voor JavaScript te installeren, is met behulp van npm-pakketbeheer. Typ het volgende in een terminalvenster:

npm install @azure/data-tables

Een verifiëren TableServiceClient

Azure Tables ondersteunt verschillende manieren om te verifiëren. Als u wilt communiceren met de Azure Tables-service, moet u bijvoorbeeld een exemplaar van een Tables-client TableServiceClientTableClient maken. Zie voorbeelden voor het maken van de TableServiceClient voor meer informatie over verificatie.

Opmerking: Azure Active Directory (AAD) wordt alleen ondersteund voor Azure Storage-accounts.

De volgende functies, interfaces, klassen of functies zijn alleen beschikbaar in Node.js

  • Autorisatie van gedeelde sleutels op basis van accountnaam en accountsleutel
    • AzureNamedKeyCredential
    • Account connection string.

JavaScript-bundel

Als u deze clientbibliotheek in de browser wilt gebruiken, moet u eerst een bundelaar gebruiken. Raadpleeg onze documentatie voor bundeling voor meer informatie over hoe u dit doet.

CORS

U moet CORS-regels (Cross-Origin Resource Sharing) instellen voor uw opslagaccount als u wilt ontwikkelen voor browsers. Ga naar Azure Portal en Azure Storage Explorer, zoek uw opslagaccount en maak nieuwe CORS-regels voor blob/queue/file/table-service(s).

U kunt bijvoorbeeld de volgende CORS-instellingen maken voor foutopsporing. Maar pas de instellingen zorgvuldig aan op basis van uw vereisten in de productieomgeving.

  • Toegestane oorsprongen: *
  • Toegestane werkwoorden: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
  • Toegestane headers: *
  • Weergegeven headers: *
  • Maximale leeftijd (seconden): 86400

Belangrijkste concepten

  • TableServiceClient - Client die functies biedt om te communiceren op het niveau van een tabelservice, zoals tabellen maken, weergeven en verwijderen

  • TableClient - Client die functies biedt voor interactie op entiteitsniveau, zoals het maken, weergeven en verwijderen van entiteiten in een tabel.

  • Table - Tabellen slaan gegevens op als verzamelingen entiteiten.

  • Entity - Entiteiten zijn vergelijkbaar met rijen. Een entiteit heeft een primaire sleutel en een set eigenschappen. Een eigenschap is een naam, getypt waardepaar, vergelijkbaar met een kolom.

Veelvoorkomende toepassingen van de Tabelservice zijn:

  • Opslaan van terabytes aan gestructureerde gegevens die kunnen worden geleverd aan webschaaltoepassingen
  • Het opslaan van gegevenssets waarvoor geen complexe joins, refererende sleutels of opgeslagen procedures zijn vereist en die kunnen worden gedenormaliseerd voor snelle toegang
  • Snel een query voor gegevens uitvoeren met een geclusterde index
  • Toegang tot gegevens met behulp van de OData-protocolfilterexpressies

Voorbeelden

Het pakket importeren

Als u de clients wilt gebruiken, importeert u het pakket in uw bestand:

const AzureTables = require("@azure/data-tables");

U kunt ook selectief alleen de typen importeren die u nodig hebt:

const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");

De Tabelserviceclient maken

De TableServiceClient vereist een URL naar de tabelservice en een toegangsreferentie. Het accepteert optioneel ook enkele instellingen in de options parameter.

TableServiceClient met AzureNamedKeyCredential

U kunt een TableServiceClient instantiëren met een AzureNamedKeyCredential door accountnaam en accountsleutel door te geven als argumenten. (De accountnaam en de accountsleutel kunnen worden verkregen via de Azure-portal.) [ALLEEN BESCHIKBAAR IN NODE.JS RUNTIME]

const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");

const account = "<account>";
const accountKey = "<accountkey>";

const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential
);

TableServiceClient met TokenCredential (AAD)

Azure Tables biedt integratie met Azure Active Directory (Azure AD) voor verificatie op basis van identiteiten van aanvragen voor de Table-service bij het instellen van een opslageindpunt. Met Azure AD kunt u op rollen gebaseerd toegangsbeheer (RBAC) gebruiken om gebruikers, groepen of toepassingen toegang te verlenen tot uw Azure Table-resources.

Als u toegang wilt krijgen tot een tabelresource met een TokenCredential, moet de geverifieerde identiteit de rol 'Inzender voor opslagtabelgegevens' of 'Lezer van opslagtabelgegevens' hebben.

Met het @azure/identity pakket kunt u naadloos aanvragen autoriseren in zowel ontwikkel- als productieomgevingen. Zie Leesmij voor Azure.Identity voor meer informatie over Azure AD-integratie in Azure Storage

const { TableServiceClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");

// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";

const clientWithAAD = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential
);

TableServiceClient met SAS-token

U kunt ook een TableServiceClient instantiëren met een SAS (Shared Access Signatures). U kunt het SAS-token ophalen uit de Azure-portal.

const { TableServiceClient, AzureSASCredential } = require("@azure/data-tables");

const account = "<account name>";
const sas = "<service Shared Access Signature Token>";

const serviceClientWithSAS = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  new AzureSASCredential(sas)
);

Tabellen in het account weergeven

U kunt tabellen in een account weergeven via een TableServiceClient exemplaar dat de listTables functie aanroept. Deze functie retourneert een PageableAsyncIterator die u kunt gebruiken for-await-of

const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");

const account = "<account>";
const accountKey = "<accountkey>";

const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential
);

async function main() {
  let tablesIter = serviceClient.listTables();
  let i = 1;
  for await (const table of tablesIter) {
    console.log(`Table${i}: ${table.name}`);
    i++;
    // Output:
    // Table1: testTable1
    // Table1: testTable2
    // Table1: testTable3
    // Table1: testTable4
    // Table1: testTable5
  }
}

main();

Een nieuwe tabel maken

U kunt een tabel maken via een TableServiceClient exemplaar dat de createTable functie aanroept. Deze functie gebruikt de naam van de tabel om als parameter te maken. Houd er rekening mee dat createTable er geen fout wordt gegenereerd wanneer de tabel al bestaat.

const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");

const account = "<account>";
const accountKey = "<accountkey>";

const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential
);

async function main() {
  const tableName = `newtable`;
  // If the table 'newTable' already exists, createTable doesn't throw
  await serviceClient.createTable(tableName);
}

main();

Hier volgt een voorbeeld dat laat zien hoe u kunt testen of de tabel al bestaat wanneer u deze probeert te maken:

const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");

const account = "<account>";
const accountKey = "<accountkey>";

const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
  `https://${account}.table.core.windows.net`,
  credential
);

async function main() {
  const tableName = `newtable${new Date().getTime()}`;
  await serviceClient.createTable(tableName, {
    onResponse: (response) => {
      if (response.status === 409) {
        console.log(`Table ${tableName} already exists`);
      }
    }
  });
}

main();

De tabelclient maken

De TableClient wordt gemaakt op een vergelijkbare manier als de TableServiceClient met het verschil dat TableClient een tabelnaam als parameter gebruikt

TableClient Met AzureNamedKeyCredential

U kunt een TableClient instantiëren met een AzureNamedKeyCredential door accountnaam en accountsleutel door te geven als argumenten. (De accountnaam en de accountsleutel kunnen worden verkregen via de Azure-portal.) [ALLEEN BESCHIKBAAR IN NODE.JS RUNTIME]

const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");

// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";

// Use AzureNamedKeyCredential with storage account and account key
// AzureNamedKeyCredential is only available in Node.js runtime, not in browsers
const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);

TableClient met TokenCredential (Azure Active Directory)

Azure Tables biedt integratie met Azure Active Directory (Azure AD) voor verificatie op basis van identiteiten van aanvragen voor de Table-service bij het instellen van een opslageindpunt. Met Azure AD kunt u op rollen gebaseerd toegangsbeheer (RBAC) gebruiken om gebruikers, groepen of toepassingen toegang te verlenen tot uw Azure Table-resources.

Als u toegang wilt krijgen tot een tabelresource met een TokenCredential, moet de geverifieerde identiteit de rol 'Inzender voor opslagtabelgegevens' of 'Lezer van opslagtabelgegevens' hebben.

Met het @azure/identity pakket kunt u naadloos aanvragen autoriseren in zowel ontwikkel- als productieomgevingen. Zie Leesmij voor Azure.Identity voor meer informatie over Azure AD-integratie in Azure Storage

const { TableClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");

// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";
const tableName = "<tableName>";

const clientWithAAD = new TableClient(
  `https://${account}.table.core.windows.net`,
  tableName,
  credential
);

TableClient met SAS-token

U kunt een TableClient instantiëren met een Sas (Shared Access Signatures). U kunt het SAS-token ophalen uit de Azure-portal.

const { TableClient, AzureSASCredential } = require("@azure/data-tables");

const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const tableName = "<tableName>";

const clientWithSAS = new TableClient(
  `https://${account}.table.core.windows.net`,
  tableName,
  new AzureSASCredential(sas)
);

TableClient met TokenCredential (AAD)

Azure Tables biedt integratie met Azure Active Directory (Azure AD) voor verificatie op basis van identiteiten van aanvragen voor de Table-service bij het instellen van een opslageindpunt. Met Azure AD kunt u op rollen gebaseerd toegangsbeheer (RBAC) gebruiken om gebruikers, groepen of toepassingen toegang te verlenen tot uw Azure Table-resources.

Als u toegang wilt krijgen tot een tabelresource met een TokenCredential, moet de geverifieerde identiteit de rol 'Inzender voor opslagtabelgegevens' of 'Lezer van opslagtabelgegevens' hebben.

Met het @azure/identity pakket kunt u naadloos aanvragen autoriseren in zowel ontwikkel- als productieomgevingen. Zie Leesmij voor Azure.Identity voor meer informatie over Azure AD-integratie in Azure Storage

const { TableClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");

// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";
const tableName = "<tableName>";

const clientWithAAD = new TableClient(
  `https://${account}.table.core.windows.net`,
  tableName,
  credential
);

Entiteiten in een tabel weergeven

U kunt entiteiten in een tabel weergeven via een TableClient exemplaar dat de listEntities functie aanroept. Deze functie retourneert een PageableAsyncIterator die u kunt gebruiken for-await-of

const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");

const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";

const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);

async function main() {
  let entitiesIter = client.listEntities();
  let i = 1;
  for await (const entity of entitiesIter) {
    console.log(`Entity${i}: PartitionKey: ${entity.partitionKey} RowKey: ${entity.rowKey}`);
    i++;
    // Output:
    // Entity1: PartitionKey: P1 RowKey: R1
    // Entity2: PartitionKey: P2 RowKey: R2
    // Entity3: PartitionKey: P3 RowKey: R3
    // Entity4: PartitionKey: P4 RowKey: R4
  }
}

main();

Een nieuwe entiteit maken en deze toevoegen aan een tabel

U kunt een nieuwe entiteit in een tabel maken door een TableClient instantie aan te roepen die de createEntity functie aanroept. Deze functie gebruikt de entiteit om in te voegen als een parameter. De entiteit moet en rowKeybevattenpartitionKey.

const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");

const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";

const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);

async function main() {
  const testEntity = {
    partitionKey: "P1",
    rowKey: "R1",
    foo: "foo",
    bar: 123
  };
  await client.createEntity(testEntity);
}

main();

Azurite en opslagemulator

De Azure Tables Client SDK werkt ook met Azurite, een met Azure Storage en Tables API compatibele serveremulator. Raadpleeg de (Azurite-opslagplaats) voor informatie over hoe u aan de slag kunt gaan met het gebruik ervan.

Verbinding maken met Azurite met snelkoppeling verbindingsreeks

De eenvoudigste manier om vanuit uw toepassing verbinding te maken met Azurite is door een connection string te configureren die verwijst naar de snelkoppeling UseDevelopmentStorage=true. De snelkoppeling is gelijk aan de volledige connection string voor de emulator, waarin de accountnaam, de accountsleutel en de emulator-eindpunten voor elk van de Azure Storage-services worden opgegeven(zie meer). Met deze snelkoppeling installeert de Azure Tables Client SDK de standaard connection string en allowInsecureConnection in de clientopties.

import { TableClient } from "@azure/data-tables";

const connectionString = "UseDevelopmentStorage=true";
const client = TableClient.fromConnectionString(connectionString, "myTable");

Verbinding maken met Azurite zonder snelkoppeling verbindingsreeks

U kunt handmatig verbinding maken met azurite zonder de snelkoppeling connection string te gebruiken door de service-URL en AzureNamedKeyCredential of een aangepaste connection string op te geven. Moet echter allowInsecureConnection handmatig worden ingesteld voor het geval Azurite wordt uitgevoerd in een http eindpunt.

import { TableClient, AzureNamedKeyCredential } from "@azure/data-tables";

const client = new TableClient(
  "<Azurite-http-table-endpoint>",
  "myTable",
  new AzureNamedKeyCredential("<Azurite-account-name>", "<Azurite-account-key>"),
  { allowInsecureConnection: true }
);

Problemen oplossen

Algemeen

Wanneer u met de Tables-service communiceert met behulp van de JavaScript/Typescript SDK, komen fouten die door de service worden geretourneerd, overeen met dezelfde HTTP-statuscodes die worden geretourneerd voor REST API-aanvragen: Foutcodes voor opslagtabelservice

Logboekregistratie

Het inschakelen van logboekregistratie kan helpen bij het ontdekken van nuttige informatie over fouten. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de AZURE_LOG_LEVEL omgevingsvariabele in op info. Logboekregistratie kan ook worden ingeschakeld tijdens runtime door aan te roepen setLogLevel in de @azure/logger:

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

Volgende stappen

Meer codevoorbeelden binnenkort beschikbaar Probleem#10531

Bijdragen

Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.

Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.

Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.

Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de handleiding voor bijdragen voor meer informatie over het bouwen en testen van de code.

Weergaven