Biblioteka klienta tabel platformy Azure dla języka JavaScript — wersja 13.3.0
Azure Tables to oparta na chmurze usługa, która przechowuje ustrukturyzowane dane NoSQL, zapewniając magazyn kluczy/atrybutów z projektem bez schematu. Magazyn tabel zapewnia deweloperom elastyczność i skalowalność we wszystkich najlepszych częściach chmury platformy Azure.
Użyj biblioteki klienta, aby:
- Tworzenie/usuwanie tabel
- Tworzenie/tworzenie/odczyt/aktualizowanie/usuwanie jednostek
Usługa Azure Cosmos DB udostępnia interfejs API tabel dla aplikacji napisanych dla usługi Azure Table Storage i wymagających możliwości premium, takich jak:
- Gotowa do użycia dystrybucja globalna.
- Dedykowana przepływność na całym świecie.
- Jednocyfrowe opóźnienia milisekund na 99. percentylu.
- Gwarantowana wysoka dostępność.
- Automatyczne indeksowanie pomocnicze.
- Biblioteka kliencka tabel platformy Azure może bezproblemowo kierować do usługi Azure Table Storage lub Punktów końcowych usługi tabel usługi Azure Cosmos DB bez żadnych zmian w kodzie.
Kluczowe linki:
- kod źródłowy
- pakietu
(NPM) - Dokumentacja referencyjna interfejs u API
- dokumentacja produktu
- przykładów
Wprowadzenie
Warunki wstępne
Obecnie obsługiwane środowiska:
- Wersje LTS Node.js
- Najnowsze wersje przeglądarek Safari, Chrome, Edge i Firefox
Aby użyć tego pakietu, musisz mieć subskrypcji platformy Azure
Instalowanie pakietu @azure/data-tables
Preferowanym sposobem zainstalowania biblioteki klienta tabel platformy Azure dla języka JavaScript jest użycie menedżera pakietów npm. Wpisz następujące polecenie w oknie terminalu:
npm install @azure/data-tables
Uwierzytelnianie TableServiceClient
Usługa Azure Tables obsługuje kilka sposobów uwierzytelniania. Aby móc korzystać z usługi Azure Tables, musisz na przykład utworzyć wystąpienie klienta tabel — TableServiceClient
lub TableClient
. Zobacz przykłady tworzenia TableServiceClient
, aby dowiedzieć się więcej na temat uwierzytelniania.
Uwaga: usługa Azure Active Directory (AAD) jest obsługiwana tylko dla kont usługi Azure Storage.
- klient usługi z kluczem udostępnionym
- klient usługi z sygnaturami dostępu współdzielonego
- klient usługi z TokenCredential (AAD)
- klient tabeli z kluczem udostępnionym
- klient tabeli z sygnaturami dostępu współdzielonego
- klient tabeli z TokenCredential (AAD)
Następujące funkcje, interfejsy, klasy lub funkcje są dostępne tylko w Node.js
- Autoryzacja klucza współużytkowanego na podstawie nazwy konta i klucza konta
AzureNamedKeyCredential
- Parametry połączenia konta.
Pakiet JavaScript
Aby użyć tej biblioteki klienta w przeglądarce, najpierw należy użyć pakietu. Aby uzyskać szczegółowe informacje o tym, jak to zrobić, zapoznaj się z naszą dokumentacją dotyczącą tworzenia pakietów .
MECHANIZM CORS
Musisz skonfigurować współużytkowanie zasobów między źródłami (CORS) regułami dla konta magazynu, jeśli chcesz utworzyć aplikacje dla przeglądarek. Przejdź do witryny Azure Portal i Eksploratora usługi Azure Storage, znajdź konto magazynu, utwórz nowe reguły CORS dla usług blob/queue/file/table.
Można na przykład utworzyć następujące ustawienia mechanizmu CORS na potrzeby debugowania. Należy jednak dokładnie dostosować ustawienia zgodnie z wymaganiami w środowisku produkcyjnym.
- Dozwolone źródła: *
- Dozwolone czasowniki: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
- Dozwolone nagłówki: *
- Uwidocznione nagłówki: *
- Maksymalny wiek (w sekundach): 86400
Kluczowe pojęcia
TableServiceClient
— klient, który udostępnia funkcje umożliwiające interakcję na poziomie usługi tabel, takich jak tworzenie, wyświetlanie listy i usuwanie tabelTableClient
— klient, który udostępnia funkcje umożliwiające interakcję na poziomie jednostki, takim jak tworzenie, wyświetlanie listy i usuwanie jednostek w tabeli.Table
— tabele przechowują dane jako kolekcje jednostek.Entity
— Jednostki są podobne do wierszy. Jednostka ma klucz podstawowy i zestaw właściwości. Właściwość jest nazwą, typed-value pair, podobną do kolumny.
Typowe zastosowania usługi Table Service obejmują:
- Przechowywanie baz danych strukturalnych obsługujących aplikacje w skali internetowej
- Przechowywanie zestawów danych, które nie wymagają złożonych sprzężeń, kluczy obcych lub procedur składowanych i można je zdenormalizować w celu zapewnienia szybkiego dostępu
- Szybkie wykonywanie zapytań dotyczących danych przy użyciu indeksu klastrowanego
- Uzyskiwanie dostępu do danych przy użyciu wyrażeń filtru protokołu OData
Przykłady
- Importowanie pakietu
-
Tworzenie klienta usługi tabel
- tabele listy na koncie
- Tworzenie nowej tabeli
- Tworzenie klienta tabeli
Importowanie pakietu
Aby użyć klientów, zaimportuj pakiet w pliku:
const AzureTables = require("@azure/data-tables");
Alternatywnie selektywnie zaimportuj tylko potrzebne typy:
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
Tworzenie klienta usługi Table Service
TableServiceClient
wymaga adresu URL usługi table i poświadczenia dostępu. Opcjonalnie akceptuje również niektóre ustawienia w parametrze options
.
TableServiceClient
za pomocą polecenia AzureNamedKeyCredential
Możesz utworzyć wystąpienie TableServiceClient
przy użyciu AzureNamedKeyCredential
, przekazując argumenty account-name i account-key. (Nazwę konta i klucz konta można uzyskać w witrynie Azure Portal). [DOSTĘPNE TYLKO W ŚRODOWISKU URUCHOMIENIOWYM NODE.JS]
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
z tokenemCredential (AAD)
Usługa Azure Tables zapewnia integrację z usługą Azure Active Directory (Azure AD) na potrzeby uwierzytelniania opartego na tożsamościach żądań do usługi Table Service podczas określania wartości docelowej punktu końcowego usługi Storage. Za pomocą usługi Azure AD możesz użyć kontroli dostępu opartej na rolach (RBAC), aby udzielić dostępu do zasobów tabel platformy Azure użytkownikom, grupom lub aplikacjom.
Aby uzyskać dostęp do zasobu tabeli przy użyciu TokenCredential
, uwierzytelniona tożsamość powinna mieć rolę "Współautor danych tabeli magazynu" lub "Czytelnik danych tabeli magazynu".
Pakiet @azure/identity
umożliwia bezproblemowe autoryzowanie żądań zarówno w środowiskach deweloperskich, jak i produkcyjnych.
Aby dowiedzieć się więcej na temat integracji usługi Azure AD w usłudze Azure Storage, zobacz 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
z tokenem SAS
Ponadto można utworzyć wystąpienie TableServiceClient
przy użyciu sygnatur dostępu współdzielonego (SAS). Token SAS można uzyskać z witryny 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)
);
Wyświetlanie listy tabel na koncie
Tabele w ramach konta można wyświetlić za pomocą wystąpienia TableServiceClient
wywołującego funkcję listTables
. Ta funkcja zwraca PageableAsyncIterator
, z których można korzystać przy użyciu 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();
Tworzenie nowej tabeli
Tabelę można utworzyć za pomocą wystąpienia TableServiceClient
wywołującego funkcję createTable
. Ta funkcja przyjmuje nazwę tabeli do utworzenia jako parametru.
Należy pamiętać, że createTable
nie zgłosi błędu, gdy tabela już istnieje.
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();
Oto przykład, który pokazuje, jak przetestować, czy tabela już istnieje podczas próby jej utworzenia:
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();
Tworzenie klienta tabeli
TableClient
jest tworzony w podobny sposób jak TableServiceClient
z różnicą, która TableClient
przyjmuje nazwę tabeli jako parametr
TableClient
z AzureNamedKeyCredential
Możesz utworzyć wystąpienie TableClient
przy użyciu AzureNamedKeyCredential
, przekazując argumenty account-name i account-key. (Nazwę konta i klucz konta można uzyskać w witrynie Azure Portal). [DOSTĘPNE TYLKO W ŚRODOWISKU URUCHOMIENIOWYM NODE.JS]
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
za pomocą TokenCredential
(Azure Active Directory)
Usługa Azure Tables zapewnia integrację z usługą Azure Active Directory (Azure AD) na potrzeby uwierzytelniania opartego na tożsamościach żądań do usługi Table Service podczas określania wartości docelowej punktu końcowego usługi Storage. Za pomocą usługi Azure AD możesz użyć kontroli dostępu opartej na rolach (RBAC), aby udzielić dostępu do zasobów tabel platformy Azure użytkownikom, grupom lub aplikacjom.
Aby uzyskać dostęp do zasobu tabeli przy użyciu TokenCredential
, uwierzytelniona tożsamość powinna mieć rolę "Współautor danych tabeli magazynu" lub "Czytelnik danych tabeli magazynu".
Pakiet @azure/identity
umożliwia bezproblemowe autoryzowanie żądań zarówno w środowiskach deweloperskich, jak i produkcyjnych.
Aby dowiedzieć się więcej na temat integracji usługi Azure AD w usłudze Azure Storage, zobacz 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
z tokenem SAS
Możesz utworzyć wystąpienie TableClient
przy użyciu sygnatur dostępu współdzielonego (SAS). Token SAS można uzyskać z witryny 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
z tokenemCredential (AAD)
Usługa Azure Tables zapewnia integrację z usługą Azure Active Directory (Azure AD) na potrzeby uwierzytelniania opartego na tożsamościach żądań do usługi Table Service podczas określania wartości docelowej punktu końcowego usługi Storage. Za pomocą usługi Azure AD możesz użyć kontroli dostępu opartej na rolach (RBAC), aby udzielić dostępu do zasobów tabel platformy Azure użytkownikom, grupom lub aplikacjom.
Aby uzyskać dostęp do zasobu tabeli przy użyciu TokenCredential
, uwierzytelniona tożsamość powinna mieć rolę "Współautor danych tabeli magazynu" lub "Czytelnik danych tabeli magazynu".
Pakiet @azure/identity
umożliwia bezproblemowe autoryzowanie żądań zarówno w środowiskach deweloperskich, jak i produkcyjnych.
Aby dowiedzieć się więcej na temat integracji usługi Azure AD w usłudze Azure Storage, zobacz 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
);
Wyświetlanie listy jednostek w tabeli
Jednostki w tabeli można wyświetlić za pomocą wystąpienia TableClient
wywołującego funkcję listEntities
. Ta funkcja zwraca PageableAsyncIterator
, z których można korzystać przy użyciu 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();
Tworzenie nowej jednostki i dodawanie jej do tabeli
Nową jednostkę w tabeli można utworzyć za pomocą wystąpienia TableClient
wywołującego funkcję createEntity
. Ta funkcja pobiera jednostkę do wstawienia jako parametru. Jednostka musi zawierać partitionKey
i rowKey
.
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 i Emulator magazynu
Zestaw SDK klienta tabel platformy Azure współpracuje również z emulatorem serwera zgodnym z usługą Azurite, usługą Azure Storage i interfejsem API tabel. Zapoznaj się zrepozytorium Azurite), aby dowiedzieć się, jak rozpocząć korzystanie z niego.
Nawiązywanie połączenia z usługą Azurite za pomocą skrótu parametrów połączenia
Najprostszym sposobem nawiązywania połączenia z usługą Azurite z aplikacji jest skonfigurowanie parametrów połączenia odwołujących się do skrótu UseDevelopmentStorage=true
. Skrót jest odpowiednikiem pełnych parametrów połączenia emulatora, który określa nazwę konta, klucz konta i punkty końcowe emulatora dla każdej z usług Azure Storage: (zobacz więcej). Za pomocą tego skrótu zestaw SDK klienta tabel platformy Azure skonfiguruje domyślne parametry połączenia i allowInsecureConnection
w opcjach klienta.
import { TableClient } from "@azure/data-tables";
const connectionString = "UseDevelopmentStorage=true";
const client = TableClient.fromConnectionString(connectionString, "myTable");
Nawiązywanie połączenia z usługą Azurite bez skrótu parametrów połączenia
Możesz nawiązać połączenie z azurite ręcznie bez użycia skrótu parametrów połączenia, określając adres URL usługi i AzureNamedKeyCredential
lub niestandardowe parametry połączenia. Jednak allowInsecureConnection
należy ustawić ręcznie w przypadku uruchomienia Azurite w punkcie końcowym http
.
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 }
);
Rozwiązywanie problemów
Ogólne
W przypadku interakcji z usługą Tables przy użyciu zestawu SDK javascript/Typescript błędy zwracane przez usługę odpowiadają tym samym kodom stanu HTTP zwracanym dla żądań interfejsu API REST: kody błędów usługi Table Service
Wyrąb
Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań i odpowiedzi HTTP, ustaw zmienną środowiskową AZURE_LOG_LEVEL
na info
. Alternatywnie rejestrowanie można włączyć w czasie wykonywania, wywołując setLogLevel
w @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Następne kroki
Wkrótce pojawi się więcej przykładów kodu: Problem#10531
Przyczyniając się
Ten projekt z zadowoleniem przyjmuje wkład i sugestie. Większość kontrybucja wymaga zgody na umowę licencyjną współautora (CLA), deklarując, że masz prawo, a w rzeczywistości przyznaj nam prawa do korzystania z twojego wkładu. Aby uzyskać szczegółowe informacje, odwiedź stronę https://cla.microsoft.com.
Po przesłaniu żądania ściągnięcia bot CLA automatycznie określi, czy musisz podać cla i odpowiednio ozdobić żądanie ściągnięcia (np. etykieta, komentarz). Po prostu postępuj zgodnie z instrukcjami dostarczonymi przez bota. Należy to zrobić tylko raz we wszystkich repozytoriach przy użyciu naszego CLA.
Ten projekt przyjął kodeks postępowania firmy Microsoft typu open source. Aby uzyskać więcej informacji, zobacz Kodeks postępowania — często zadawane pytania lub skontaktuj się z opencode@microsoft.com z dodatkowymi pytaniami lub komentarzami.
Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik dotyczący współtworzenia , aby dowiedzieć się więcej na temat tworzenia i testowania kodu.
Azure SDK for JavaScript