Azure Tables-Clientbibliothek für JavaScript – Version 13.2.2

Azure Tables ist ein cloudbasierter Dienst, der strukturierte NoSQL-Daten speichert und einen Schlüssel-/Attributspeicher mit einem schemalosen Design bereitstellt. Tabellenspeicher bietet Entwicklern Flexibilität und Skalierbarkeit mit den besten Komponenten der Azure-Cloud.

Verwenden Sie die Clientbibliothek für folgende Aktionen:

  • Erstellen/Löschen von Tabellen
  • Abfragen/Erstellen/Lesen/Aktualisieren/Löschen von Entitäten

Azure Cosmos DB bietet eine Tabellen-API für Anwendungen, die für Azure Table Storage geschrieben sind und Premium-Funktionen wie folgendes benötigen:

  • Globale, sofort einsatzbereite Verteilung
  • Dedizierter Durchsatz weltweit.
  • Einstellige Latenzzeiten im Millisekundenbereich im 99. Perzentil.
  • Garantierte Hochverfügbarkeit.
  • Automatische sekundäre Indizierung
  • Die Azure Tables-Clientbibliothek kann nahtlos auf Azure-Tabellenspeicher oder Azure Cosmos DB-Tabellendienstendpunkte ohne Codeänderungen ausgerichtet werden.

Wichtige Links:

Erste Schritte

Voraussetzungen

Derzeit unterstützte Umgebungen:

  • LTS-Versionen von Node.js
  • Neueste Versionen von Safari, Chrome, Edge und Firefox

Sie benötigen ein Azure-Abonnement und ein Speicherkonto oder eine Azure CosmosDB-Datenbank , um dieses Paket verwenden zu können.

Installieren Sie das Paket @azure/data-tables.

Die bevorzugte Methode zum Installieren der Azure Tables-Clientbibliothek für JavaScript besteht darin, den npm-Paket-Manager zu verwenden. Geben Sie Folgendes in ein Terminalfenster ein:

npm install @azure/data-tables

Authentifizieren eines TableServiceClient

Azure Tables unterstützt mehrere Möglichkeiten zur Authentifizierung. Um mit dem Azure Tables-Dienst interagieren zu können, müssen Sie beispielsweise eine instance eines Tabellenclients TableServiceClientTableClient erstellen. Weitere Informationen zur Authentifizierung finden Sie unter Beispiele zum Erstellen von TableServiceClient .

Hinweis: Azure Active Directory (AAD) wird nur für Azure Storage-Konten unterstützt.

Folgende Features, Schnittstellen, Klassen oder Funktionen sind nur in Node.js

  • Freigabeschlüsselautorisierung basierend auf Kontoname und Kontoschlüssel
    • AzureNamedKeyCredential
    • Kontoverbindungszeichenfolge.

JavaScript-Bundle

Um diese Clientbibliothek im Browser zu verwenden, müssen Sie zunächst einen Bundler verwenden. Ausführliche Informationen dazu finden Sie in unserer Bündelungsdokumentation.

CORS

Sie müssen CORS-Regeln (Cross-Origin Resource Sharing) für Ihr Speicherkonto einrichten, wenn Sie für Browser entwickeln müssen. Wechseln Sie zu Azure-Portal und Azure Storage-Explorer, suchen Sie Nach Ihrem Speicherkonto, und erstellen Sie neue CORS-Regeln für Blob-,Warteschlangen-,Datei-/Tabellendienste.

Sie können beispielsweise die folgenden CORS-Einstellungen für das Debuggen erstellen. Aber bitte passen Sie die Einstellungen sorgfältig an Ihre Anforderungen in der Produktionsumgebung an.

  • Zulässige Ursprünge: *
  • Zulässige Verben: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
  • Zulässige Header: *
  • Verfügbar gemachte Header: *
  • Maximales Alter (Sekunden): 86400

Wichtige Begriffe

  • TableServiceClient - Client, der Funktionen für die Interaktion auf Tabellendienstebene bereitstellt, z. B. Erstellen, Auflisten und Löschen von Tabellen

  • TableClient - Client, der Funktionen für die Interaktion auf Entitätsebene bereitstellt, z. B. Erstellen, Auflisten und Löschen von Entitäten innerhalb einer Tabelle.

  • Table - Tabellen speichern Daten als Sammlungen von Entitäten.

  • Entity - Entitäten ähneln Zeilen. Eine Entität besitzt einen Primärschlüssel und einen Satz von Eigenschaften. Eine Eigenschaft ist ein Paar aus Name und typisiertem Wert ähnlich einer Spalte.

Der Tabellenspeicherdienst wird hauptsächlich für folgende Zwecke verwendet:

  • Speicherung strukturierter Daten in TB-Größe zur Verarbeitung webbasierter Anwendungen
  • Speichern von Datasets, die keine komplexen Joins, Fremdschlüssel oder gespeicherten Prozeduren erfordern und für den schnellen Zugriff denormiert werden können
  • Schnelle Datenabfrage mithilfe eines gruppierten Index
  • Zugreifen auf Daten mithilfe der OData-Protokollfilterausdrücke

Beispiele

Importieren des Pakets

Um die Clients zu verwenden, importieren Sie das Paket in Ihrer Datei:

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

Alternativ können Sie selektiv nur die Typen importieren, die Sie benötigen:

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

Erstellen des Tabellenspeicherdienst-Clients

Die TableServiceClient erfordert eine URL für den Tabellendienst und Zugriffsanmeldeinformationen. Optional werden auch einige Einstellungen im options Parameter akzeptiert.

TableServiceClient mit AzureNamedKeyCredential

Sie können ein mit einem TableServiceClientAzureNamedKeyCredential instanziieren, indem Sie kontoname und account-key als Argumente übergeben. (Der Kontoname und der Kontoschlüssel können über das Azure-Portal abgerufen werden.) [NUR IN NODE.JS RUNTIME VERFÜGBAR]

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 mit TokenCredential (AAD)

Azure Tables bietet die Integration in Azure Active Directory (Azure AD) für die identitätsbasierte Authentifizierung von Anforderungen an den Tabellendienst beim Ziel eines Speicherendpunkts. Mit Azure AD können Sie die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) verwenden, um Benutzern, Gruppen oder Anwendungen Zugriff auf Ihre Azure Table-Ressourcen zu gewähren.

Für den Zugriff auf eine Tabellenressource mit einem TokenCredentialmuss die authentifizierte Identität entweder über die Rolle "Mitwirkender für Speichertabellendaten" oder "Speichertabellendatenleser" verfügen.

Mit dem @azure/identity Paket können Sie Anforderungen sowohl in Entwicklungs- als auch in Produktionsumgebungen nahtlos autorisieren. Weitere Informationen zur Azure AD-Integration in Azure Storage finden Sie unter Azure.Identity README

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 mit SAS-Token

Außerdem können Sie ein TableServiceClient mit einer SAS (Shared Access Signatures) instanziieren. Sie können das SAS-Token über das Azure-Portal abrufen.

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

Auflisten von Tabellen im Konto

Sie können Tabellen innerhalb eines Kontos über einen TableServiceClient instance auflisten, der die listTables Funktion aufruft. Diese Funktion gibt eine PageableAsyncIterator zurück, die Sie verwenden können 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();

Erstellen einer neuen Tabelle

Sie können eine Tabelle über einen TableServiceClient instance erstellen, der die createTable Funktion aufruft. Diese Funktion verwendet den Namen der zu erstellenden Tabelle als Parameter. Beachten Sie, dass createTable keinen Fehler auslöst, wenn die Tabelle bereits vorhanden ist.

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

Im Folgenden finden Sie ein Beispiel, das zeigt, wie Sie beim Erstellen testen, ob die Tabelle bereits vorhanden ist:

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

Erstellen des Tabellenclients

wird TableClient auf ähnliche Weise erstellt wie die TableServiceClient mit dem Unterschied, der TableClient einen Tabellennamen als Parameter verwendet.

TableClient mit AzureNamedKeyCredential

Sie können ein TableClient mit einem AzureNamedKeyCredential instanziieren, indem Sie kontoname und kontoschlüssel als Argumente übergeben. (Kontoname und Kontoschlüssel können über das Azure-Portal abgerufen werden.) [NUR IN NODE.JS RUNTIME VERFÜGBAR]

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 mit TokenCredential (Azure Active Directory)

Azure Tables bietet die Integration in Azure Active Directory (Azure AD) für die identitätsbasierte Authentifizierung von Anforderungen an den Tabellendienst, wenn ein Speicherendpunkt als Ziel verwendet wird. Mit Azure AD können Sie die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) verwenden, um Benutzern, Gruppen oder Anwendungen Zugriff auf Ihre Azure Table-Ressourcen zu gewähren.

Für den Zugriff auf eine Tabellenressource mit einem TokenCredentialmuss die authentifizierte Identität entweder über die Rolle "Mitwirkender an Speichertabellendaten" oder "Speichertabellendatenleser" verfügen.

Mit dem @azure/identity Paket können Sie Anforderungen sowohl in Entwicklungs- als auch in Produktionsumgebungen nahtlos autorisieren. Weitere Informationen zur Azure AD-Integration in Azure Storage finden Sie in der Infodatei zu Azure.Identity.

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 mit SAS-Token

Sie können eine TableClient mit einer Sas (Shared Access Signatures) instanziieren. Sie können das SAS-Token aus dem Azure-Portal abrufen.

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 mit TokenCredential (AAD)

Azure Tables bietet die Integration in Azure Active Directory (Azure AD) für die identitätsbasierte Authentifizierung von Anforderungen an den Tabellendienst, wenn ein Speicherendpunkt als Ziel verwendet wird. Mit Azure AD können Sie die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) verwenden, um Benutzern, Gruppen oder Anwendungen Zugriff auf Ihre Azure Table-Ressourcen zu gewähren.

Für den Zugriff auf eine Tabellenressource mit einem TokenCredentialmuss die authentifizierte Identität entweder über die Rolle "Mitwirkender an Speichertabellendaten" oder "Speichertabellendatenleser" verfügen.

Mit dem @azure/identity Paket können Sie Anforderungen sowohl in Entwicklungs- als auch in Produktionsumgebungen nahtlos autorisieren. Weitere Informationen zur Azure AD-Integration in Azure Storage finden Sie in der Infodatei zu Azure.Identity.

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

Auflisten von Entitäten in einer Tabelle

Sie können Entitäten innerhalb einer Tabelle über eine TableClient instance auflisten, die die listEntities Funktion aufruft. Diese Funktion gibt eine PageableAsyncIterator zurück, die Sie mit verwenden können. 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();

Erstellen einer neuen Entität und Hinzufügen zu einer Tabelle

Sie können eine neue Entität in einer Tabelle erstellen, indem Sie eine TableClient instance die createEntity Funktion aufrufen. Diese Funktion verwendet die einzufügende Entität als Parameter. Die Entität muss und rowKeyenthaltenpartitionKey.

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 und Speicher-Emulator

Das Azure Tables Client SDK funktioniert auch mit Azurite, einem mit Azure Storage und Tabellen-API kompatiblen Serveremulator. Informationen zu den ersten Schritten zur Verwendung finden Sie im Azurite-Repository.

Herstellen einer Verbindung mit Azurite mit Verbindungszeichenfolgenverknüpfung

Die einfachste Möglichkeit, von Ihrer Anwendung aus eine Verbindung mit Azurite herzustellen, besteht darin, eine Verbindungszeichenfolge zu konfigurieren, die auf die Verknüpfung UseDevelopmentStorage=trueverweist. Die Verknüpfung entspricht der vollständigen Verbindungszeichenfolge für den Emulator, die den Kontonamen, den Kontoschlüssel und die Emulatorendpunkte für die einzelnen Azure Storage-Dienste angibt( weitere Informationen). Mithilfe dieser Verknüpfung würde das Azure Tables Client SDK die Standardverbindungszeichenfolge und allowInsecureConnection in den Clientoptionen einrichten.

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

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

Herstellen einer Verbindung mit Azurite ohne Verbindungszeichenfolgenverknüpfung

Sie können manuell eine Verbindung mit azurite herstellen, ohne die Verbindungszeichenfolgenverknüpfung zu verwenden, indem Sie die Dienst-URL und AzureNamedKeyCredential oder eine benutzerdefinierte Verbindungszeichenfolge angeben. Muss jedoch manuell festgelegt werden, allowInsecureConnection falls Azurite in einem http Endpunkt ausgeführt wird.

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

Problembehandlung

Allgemein

Wenn Sie mit dem Tabellendienst mithilfe des Javascript/Typescript SDK interagieren, entsprechen die vom Dienst zurückgegebenen Fehler denselben HTTP-status Codes, die für REST-API-Anforderungen zurückgegeben werden: Fehlercodes des Speichertabellendiensts.

Protokollierung

Die Aktivierung der Protokollierung kann hilfreiche Informationen über Fehler aufdecken. Um ein Protokoll von HTTP-Anforderungen und -Antworten anzuzeigen, legen Sie die Umgebungsvariable AZURE_LOG_LEVEL auf info fest. Alternativ kann die Protokollierung zur Laufzeit aktiviert werden, indem Sie setLogLevel in @azure/logger aufrufen:

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

setLogLevel("info");

Nächste Schritte

Weitere Codebeispiele in Kürze Verfügbar Issue#10531

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.

Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.

Wenn Sie an dieser Bibliothek mitwirken möchten, lesen Sie die Anleitung für Mitwirkende, um mehr darüber zu erfahren, wie Sie den Code erstellen und testen können.

Aufrufe