Bagikan melalui


Pustaka klien Azure Tables untuk JavaScript - versi 13.3.2

Azure Tables adalah layanan berbasis cloud yang menyimpan data NoSQL terstruktur, menyediakan penyimpanan kunci/atribut dengan desain tanpa skema. Penyimpanan tabel memberi pengembang fleksibilitas dan skalabilitas dengan semua bagian terbaik cloud Azure.

Gunakan pustaka klien untuk:

  • Membuat/Menghapus Tabel
  • Kueri/Buat/Baca/Perbarui/Hapus Entitas

Azure Cosmos DB menyediakan TABLE API untuk aplikasi yang ditulis untuk penyimpanan Azure Table dan yang membutuhkan kemampuan premium seperti:

  • Distribusi global Turnkey.
  • Throughput khusus di seluruh dunia.
  • Latensi milidetik satu digit pada persentil ke-99.
  • Ketersediaan tinggi yang dijamin.
  • Pengindeksan sekunder otomatis.
  • Pustaka klien Azure Tables dapat dengan mulus menargetkan penyimpanan tabel Azure atau titik akhir layanan tabel Azure Cosmos DB tanpa perubahan kode.

Tautan kunci:

Persiapan

Prasyarat

Lingkungan yang saat ini didukung:

  • Versi LTS dari Node.js
  • Safari, Chrome, Edge, dan Firefox versi terbaru

Anda harus memiliki langganan Azure dan Akun Penyimpanan atau database Azure CosmosDB untuk menggunakan paket ini.

Menginstal paket @azure/data-tables

Cara yang disukai untuk menginstal pustaka klien Azure Tables untuk JavaScript adalah dengan menggunakan pengelola paket npm. Ketik berikut ini ke dalam jendela terminal:

npm install @azure/data-tables

Mengautentikasi TableServiceClient

Tabel Azure mendukung beberapa cara untuk mengautentikasi. Untuk berinteraksi dengan layanan Azure Tables, Anda harus membuat instans klien Tabel - TableServiceClient atau TableClient misalnya. Lihat sampel untuk membuat TableServiceClient untuk mempelajari selengkapnya tentang autentikasi.

Catatan: Azure Active Directory (AAD) hanya didukung untuk akun Azure Storage.

Fitur, antarmuka, kelas, atau fungsi berikut ini hanya tersedia di Node.js

  • Otorisasi Kunci Bersama berdasarkan nama akun dan kunci akun
    • AzureNamedKeyCredential
    • String koneksi akun.

Bundel JavaScript

Untuk menggunakan pustaka klien ini di browser, pertama-tama Anda perlu menggunakan bunder. Untuk detail tentang cara melakukan ini, silakan lihat dokumentasi bundling kami.

CORS

Anda perlu menyiapkan aturan Berbagi Sumber Daya Lintas Asal (CORS) untuk akun penyimpanan Anda jika Anda perlu mengembangkan browser. Buka portal Microsoft Azure dan Azure Storage Explorer, temukan akun penyimpanan Anda, buat aturan CORS baru untuk layanan blob/antrean/file/tabel.

Misalnya, Anda dapat membuat pengaturan CORS berikut untuk penelusuran kesalahan. Tetapi silakan sesuaikan pengaturan dengan hati-hati sesuai dengan kebutuhan Anda di lingkungan produksi.

  • Asal yang diizinkan: *
  • Kata kerja yang diizinkan: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
  • Header yang diizinkan: *
  • Header yang diekspos: *
  • Usia maksimum (detik): 86400

Konsep utama

  • TableServiceClient - Klien yang menyediakan fungsi untuk berinteraksi di tingkat Layanan Tabel seperti membuat, mencantumkan, dan menghapus tabel

  • TableClient - Klien yang menyediakan fungsi untuk berinteraksi di tingkat entitas seperti membuat, mencantumkan, dan menghapus entitas dalam tabel.

  • Table - Tabel menyimpan data sebagai kumpulan entitas.

  • Entity - Entitas mirip dengan baris. Entitas memiliki kunci primer dan sekumpulan properti. Properti adalah nama, pasangan nilai yang ditik, mirip dengan kolom.

Penggunaan umum layanan Tabel meliputi:

  • Menyimpan TB data terstruktur yang mampu melayani aplikasi skala web
  • Menyimpan himpunan data yang tidak memerlukan gabungan kompleks, kunci asing, atau prosedur tersimpan dan dapat dinormalisasi untuk akses cepat
  • Mengkueri data dengan cepat menggunakan indeks berkluster
  • Mengakses data menggunakan ekspresi filter protokol OData

Contoh

Impor paket

Untuk menggunakan klien, impor paket dalam file Anda:

import * as azureTables from "@azure/data-tables";

Atau, secara selektif hanya mengimpor jenis yang Anda butuhkan:

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

Membuat klien layanan Tabel

TableServiceClient memerlukan URL ke layanan tabel dan kredensial akses. Ini juga secara opsional menerima beberapa pengaturan dalam parameter options.

TableServiceClient dengan AzureNamedKeyCredential

Anda dapat membuat instans TableServiceClient dengan AzureNamedKeyCredential dengan meneruskan nama akun dan kunci akun sebagai argumen. (Nama akun dan kunci akun dapat diperoleh dari portal microsoft Azure.) [HANYA TERSEDIA DALAM RUNTIME NODE.JS]

import { AzureNamedKeyCredential, TableServiceClient } from "@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 dengan TokenCredential (AAD)

Azure Tables menyediakan integrasi dengan Azure Active Directory (Azure AD) untuk autentikasi permintaan berbasis identitas ke layanan Tabel saat menargetkan titik akhir Penyimpanan. Dengan Azure AD, Anda dapat menggunakan kontrol akses berbasis peran (RBAC) untuk memberikan akses ke sumber daya Azure Table Anda kepada pengguna, grup, atau aplikasi.

Untuk mengakses sumber daya tabel dengan TokenCredential, identitas yang diautentikasi harus memiliki peran "Kontributor Data Tabel Penyimpanan" atau "Pembaca Data Tabel Penyimpanan".

Dengan paket @azure/identity, Anda dapat mengotorisasi permintaan dengan mulus di lingkungan pengembangan dan produksi. Untuk mempelajari selengkapnya tentang integrasi Microsoft Azure ACTIVE Directory di Azure Storage, lihat Azure.Identity README

import { DefaultAzureCredential } from "@azure/identity";
import { TableServiceClient } from "@azure/data-tables";

const credential = new DefaultAzureCredential();
const account = "<account name>";

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

TableServiceClient dengan Token SAS

Selain itu, Anda dapat membuat instans TableServiceClient dengan tanda tangan akses bersama (SAS). Anda bisa mendapatkan token SAS dari Portal Microsoft Azure.

import { TableServiceClient, AzureSASCredential } from "@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),
);

Mencantumkan tabel di akun

Anda dapat mencantumkan tabel dalam akun melalui instans TableServiceClient yang memanggil fungsi listTables. Fungsi ini mengembalikan PageableAsyncIterator yang dapat Anda gunakan menggunakan for-await-of

import { DefaultAzureCredential } from "@azure/identity";
import { TableServiceClient } from "@azure/data-tables";

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

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

let i = 0;
const tables = serviceClient.listTables();
for await (const table of tables) {
  console.log(`Table${++i}: ${table.name}`);
}

Membuat tabel baru

Anda dapat membuat tabel melalui instans TableServiceClient yang memanggil fungsi createTable. Fungsi ini mengambil nama tabel untuk dibuat sebagai parameter. Perhatikan bahwa createTable tidak akan melemparkan kesalahan saat tabel sudah ada.

import { DefaultAzureCredential } from "@azure/identity";
import { TableServiceClient } from "@azure/data-tables";

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

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

const tableName = "newtable";
// If the table 'newTable' already exists, createTable doesn't throw
await serviceClient.createTable(tableName);

Berikut adalah sampel yang menunjukkan cara menguji apakah tabel sudah ada saat mencoba membuatnya:

import { DefaultAzureCredential } from "@azure/identity";
import { TableServiceClient } from "@azure/data-tables";

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

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

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

Membuat klien tabel

TableClient dibuat dengan cara yang sama seperti TableServiceClient dengan perbedaan bahwa TableClient mengambil nama tabel sebagai parameter

TableClient dengan AzureNamedKeyCredential

Anda dapat membuat instans TableClient dengan AzureNamedKeyCredential dengan meneruskan nama akun dan kunci akun sebagai argumen. (Nama akun dan kunci akun dapat diperoleh dari portal microsoft Azure.) [HANYA TERSEDIA DALAM RUNTIME NODE.JS]

import { AzureNamedKeyCredential, TableClient } from "@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 dengan TokenCredential (Azure Active Directory)

Azure Tables menyediakan integrasi dengan Azure Active Directory (Azure AD) untuk autentikasi permintaan berbasis identitas ke layanan Tabel saat menargetkan titik akhir Penyimpanan. Dengan Azure AD, Anda dapat menggunakan kontrol akses berbasis peran (RBAC) untuk memberikan akses ke sumber daya Azure Table Anda kepada pengguna, grup, atau aplikasi.

Untuk mengakses sumber daya tabel dengan TokenCredential, identitas yang diautentikasi harus memiliki peran "Kontributor Data Tabel Penyimpanan" atau "Pembaca Data Tabel Penyimpanan".

Dengan paket @azure/identity, Anda dapat mengotorisasi permintaan dengan mulus di lingkungan pengembangan dan produksi. Untuk mempelajari selengkapnya tentang integrasi Microsoft Azure ACTIVE Directory di Azure Storage, lihat Azure.Identity README

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

const credential = new DefaultAzureCredential();
const account = "<account name>";
const tableName = "<tableName>";

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

TableClient dengan Token SAS

Anda dapat membuat instans TableClient dengan tanda tangan akses bersama (SAS). Anda bisa mendapatkan token SAS dari Portal Microsoft Azure.

import { TableClient, AzureSASCredential } from "@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),
);

Mencantumkan Entitas dalam tabel

Anda dapat mencantumkan entitas dalam tabel dengan melalui instans TableClient yang memanggil fungsi listEntities. Fungsi ini mengembalikan PageableAsyncIterator yang dapat Anda gunakan menggunakan for-await-of

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

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

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

let i = 0;
const entities = client.listEntities();
for await (const entity of entities) {
  console.log(`Entity${++i}: PartitionKey: ${entity.partitionKey} RowKey: ${entity.rowKey}`);
}

Membuat entitas baru dan menambahkannya ke tabel

Anda dapat membuat Entitas baru dalam tabel dengan melalui instans TableClient yang memanggil fungsi createEntity. Fungsi ini mengambil entitas untuk disisipkan sebagai parameter. Entitas harus berisi partitionKey dan rowKey.

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

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

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

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

Emulator Azurite dan Storage

SDK Klien Azure Tables juga berfungsi dengan Azurite, emulator server yang kompatibel dengan Azure Storage dan Tables API. Silakan merujuk ke (repositori Azurite) tentang cara mulai menggunakannya.

Menyambungkan ke Azurite dengan pintasan String Koneksi

Cara termampu untuk terhubung ke Azurite dari aplikasi Anda adalah dengan mengonfigurasi string koneksi yang mereferensikan pintasan UseDevelopmentStorage=true. Pintasan setara dengan string koneksi lengkap untuk emulator, yang menentukan nama akun, kunci akun, dan titik akhir emulator untuk setiap layanan Azure Storage: (lihat lebih banyak). Dengan menggunakan pintasan ini, Azure Tables Client SDK akan menyiapkan string koneksi default dan allowInsecureConnection di opsi klien.

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

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

Menyambungkan ke Azurite tanpa pintasan String Koneksi

Anda dapat tersambung ke azurite secara manual tanpa menggunakan pintasan string koneksi dengan menentukan URL layanan dan AzureNamedKeyCredential atau string koneksi kustom. Namun, allowInsecureConnection perlu diatur secara manual jika Azurite berjalan di titik akhir 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 },
);

Pemecahan masalah

Umum

Saat Anda berinteraksi dengan layanan Tabel menggunakan Javascript/Typescript SDK, kesalahan yang dikembalikan oleh layanan sesuai dengan kode status HTTP yang sama yang dikembalikan untuk permintaan REST API: Kode Kesalahan Layanan Tabel Penyimpanan

Penebangan

Mengaktifkan pengelogan dapat membantu mengungkap informasi yang berguna tentang kegagalan. Untuk melihat log permintaan dan respons HTTP, atur variabel lingkungan AZURE_LOG_LEVEL ke info. Atau, pengelogan dapat diaktifkan saat runtime dengan memanggil setLogLevel di @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Berkontribusi

Proyek ini menyambut kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.

Saat Anda mengirimkan permintaan pull, cla-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repositori menggunakan CLA kami.

Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Kode Etik atau hubungi opencode@microsoft.com dengan pertanyaan atau komentar tambahan apa pun.

Jika Anda ingin berkontribusi pada pustaka ini, baca panduan berkontribusi untuk mempelajari selengkapnya tentang cara membuat dan menguji kode.