Freigeben über


Azure Tables-Clientbibliothek für JavaScript – Version 13.3.0

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 allen besten Teilen der Azure-Cloud.

Verwenden Sie die Clientbibliothek für Folgendes:

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

Azure Cosmos DB stellt eine Tabellen-API für Anwendungen bereit, die für azure Table Storage geschrieben sind und Premiumfunktionen wie:

  • Turnkey global distribution.
  • Dedizierter Durchsatz weltweit.
  • Einstellige Millisekundenlatenz am 99. Quantil.
  • Garantierte hohe Verfü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 müssen über ein Azure-Abonnement und ein Speicherkonto verfügen, oder eine Azure CosmosDB-Datenbank, um dieses Paket zu verwenden.

Installieren des @azure/data-tables-Pakets

Die bevorzugte Methode zum Installieren der Azure Tables-Clientbibliothek für JavaScript ist die Verwendung des npm-Paket-Managers. 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 zu interagieren, müssen Sie beispielsweise eine Instanz eines Tables-Clients erstellen – TableServiceClient oder TableClient. Weitere Informationen zur Authentifizierung finden Sie in Beispielen zum Erstellen des TableServiceClient.

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

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

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

JavaScript-Bündel

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

CORS

Sie müssen Cross-Origin Resource Sharing (CORS) Regeln für Ihr Speicherkonto einrichten, wenn Sie für Browser entwickeln müssen. Wechseln Sie zu Azure-Portal und Azure Storage-Explorer, suchen Sie Ihr Speicherkonto, erstellen Sie neue CORS-Regeln für blob/queue/file/table service(s).

Sie können z. B. die folgenden CORS-Einstellungen für das Debuggen erstellen. Passen Sie die Einstellungen jedoch entsprechend Ihren Anforderungen in der Produktionsumgebung sorgfältig an.

  • Zulässige Ursprünge: *
  • Zulässige Verben: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
  • Zulässige Kopfzeilen: *
  • Verfügbar gemachte Kopfzeilen: *
  • Höchstalter (Sekunden): 86400

Schlüsselkonzepte

  • 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 verfügt über einen Primärschlüssel und eine Reihe von Eigenschaften. Eine Eigenschaft ist ein Name- und Typ-Wert-Paar, ähnlich einer Spalte.

Häufige Verwendungsmöglichkeiten des Tabellendiensts umfassen:

  • Speichern von TBs von strukturierten Daten, die Webanwendungen bereitstellen können
  • Speichern von Datasets, die keine komplexen Verknüpfungen, Fremdschlüssel oder gespeicherten Prozeduren erfordern und für schnellen Zugriff denormiert werden können
  • Schnelles Abfragen von Daten mithilfe eines gruppierten Indexes
  • Zugreifen auf Daten mithilfe der OData-Protokollfilterausdrücke

Beispiele

Importieren des Pakets

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

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

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

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

Erstellen des Tabellendienstclients

Für die TableServiceClient ist eine URL zum Tabellendienst und eine Zugriffsanmeldeinformationen erforderlich. Sie akzeptiert optional auch einige Einstellungen im options-Parameter.

TableServiceClient mit AzureNamedKeyCredential

Sie können eine TableServiceClient mit einem AzureNamedKeyCredential instanziieren, indem Sie Kontoname und Kontoschlüssel 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 Integration in Azure Active Directory (Azure AD) für die identitätsbasierte Authentifizierung von Anforderungen an den Tabellendienst, wenn sie auf einen Speicherendpunkt ausgerichtet sind. Mit Azure AD können Sie rollenbasierte Zugriffssteuerung (RBAC) verwenden, um Benutzern, Gruppen oder Anwendungen Zugriff auf Ihre Azure Table-Ressourcen zu gewähren.

Um auf eine Tabellenressource mit einem TokenCredentialzuzugreifen, sollte 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 in Entwicklungs- und Produktionsumgebungen nahtlos autorisieren. Weitere Informationen zur Azure AD-Integration in Azure Storage finden Sie im 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 eine TableServiceClient mit einer freigegebenen Zugriffssignatur (SAS) instanziieren. Sie können das SAS-Token aus dem 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 in einem Konto über eine TableServiceClient Instanz auflisten, die die listTables-Funktion aufruft. Diese Funktion gibt einen PageableAsyncIterator zurück, den Sie mit 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() {
  const 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 eine TableServiceClient Instanz erstellen, die die createTable-Funktion aufruft. Diese Funktion verwendet den Namen der Tabelle, die als Parameter erstellt werden soll. 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();

Hier ist ein Beispiel, das veranschaulicht, wie Sie testen können, ob die Tabelle bereits vorhanden ist, wenn Sie versuchen, sie zu erstellen:

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

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

TableClient mit AzureNamedKeyCredential

Sie können eine TableClient mit einem AzureNamedKeyCredential instanziieren, indem Sie Kontoname und Kontoschlüssel 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 { 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 Integration in Azure Active Directory (Azure AD) für die identitätsbasierte Authentifizierung von Anforderungen an den Tabellendienst, wenn sie auf einen Speicherendpunkt ausgerichtet sind. Mit Azure AD können Sie rollenbasierte Zugriffssteuerung (RBAC) verwenden, um Benutzern, Gruppen oder Anwendungen Zugriff auf Ihre Azure Table-Ressourcen zu gewähren.

Um auf eine Tabellenressource mit einem TokenCredentialzuzugreifen, sollte 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 in Entwicklungs- und Produktionsumgebungen nahtlos autorisieren. Weitere Informationen zur Azure AD-Integration in Azure Storage finden Sie im Azure.Identity README-

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 freigegebenen Zugriffssignatur (SAS) 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 Integration in Azure Active Directory (Azure AD) für die identitätsbasierte Authentifizierung von Anforderungen an den Tabellendienst, wenn sie auf einen Speicherendpunkt ausgerichtet sind. Mit Azure AD können Sie rollenbasierte Zugriffssteuerung (RBAC) verwenden, um Benutzern, Gruppen oder Anwendungen Zugriff auf Ihre Azure Table-Ressourcen zu gewähren.

Um auf eine Tabellenressource mit einem TokenCredentialzuzugreifen, sollte 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 in Entwicklungs- und Produktionsumgebungen nahtlos autorisieren. Weitere Informationen zur Azure AD-Integration in Azure Storage finden Sie im Azure.Identity README-

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 Instanz auflisten, die die listEntities-Funktion aufruft. Diese Funktion gibt einen PageableAsyncIterator zurück, den Sie mit 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() {
  const 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 Instanz aufrufen, die die createEntity-Funktion aufruft. Diese Funktion verwendet die Entität, die als Parameter eingefügt werden soll. Die Entität muss partitionKey und rowKeyenthalten.

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 Tables API kompatiblen Serveremulator. Informationen zu den ersten Schritten finden Sie im (Azurite Repository).

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 verweist UseDevelopmentStorage=true. 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). Mit 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");

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. allowInsecureConnection muss jedoch manuell festgelegt werden, wenn 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 }
);

Fehlerbehebung

Allgemein

Wenn Sie mit dem Tabellendienst mit dem Javascript/Typescript SDK interagieren, entsprechen fehler, die vom Dienst zurückgegeben werden, den gleichen HTTP-Statuscodes, die für REST-API-Anforderungen zurückgegeben werden: Fehlercodes des Speichertabellendiensts

Protokollierung

Das Aktivieren der Protokollierung kann hilfreiche Informationen zu Fehlern aufdecken. Um ein Protokoll von HTTP-Anforderungen und -Antworten anzuzeigen, legen Sie die AZURE_LOG_LEVEL Umgebungsvariable auf infofest. Alternativ kann die Protokollierung zur Laufzeit durch Aufrufen von setLogLevel im @azure/loggeraktiviert werden:

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

setLogLevel("info");

Nächste Schritte

Weitere Codebeispiele, die in Kürze verfügbar sind, Problem Nr. 10531

Beitragend

Dieses Projekt begrüßt Beiträge und Vorschläge. Die meisten Beiträge erfordern, dass Sie einem Mitwirkenden-Lizenzvertrag (CLA) zustimmen, der erklärt, dass Sie das Recht haben, uns tatsächlich die Rechte zur Nutzung Ihres Beitrags zu gewähren. Weitere Informationen finden Sie unter https://cla.microsoft.com.

Wenn Sie eine Pullanfrage einreichen, bestimmt ein CLA-Bot automatisch, ob Sie eine CLA bereitstellen und die PR entsprechend dekorieren müssen (z. B. Bezeichnung, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Sie müssen dies nur einmal über alle Reposs hinweg tun, indem Sie unsereN CLA verwenden.

Dieses Projekt hat den Microsoft Open Source Code of Conductübernommen. Weitere Informationen finden Sie im Code of Conduct FAQ oder wenden Sie sich an opencode@microsoft.com mit weiteren Fragen oder Kommentaren.

Wenn Sie an dieser Bibliothek mitwirken möchten, lesen Sie bitte den mitwirkenden Leitfaden, um mehr über das Erstellen und Testen des Codes zu erfahren.

Aufrufe