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.
- -Dienstclient mit gemeinsam genutztem Schlüssel
- -Dienstclient mit freigegebenen Zugriffssignaturen
- Dienstclient mit TokenCredential (AAD)-
- Tabellenclient mit freigegebenem Schlüssel
- Tabellenclient mit freigegebenen Zugriffssignaturen
- Tabellenclient mit TokenCredential (AAD)-
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 TabellenTableClient
– 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 TokenCredential
zuzugreifen, 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 TokenCredential
zuzugreifen, 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 TokenCredential
zuzugreifen, 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 rowKey
enthalten.
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 info
fest. Alternativ kann die Protokollierung zur Laufzeit durch Aufrufen von setLogLevel
im @azure/logger
aktiviert 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.
Azure SDK for JavaScript