Bagikan melalui


Pustaka klien Azure Tables untuk JavaScript - versi 13.2.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:

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

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

  • Distribusi global Turnkey.
  • Throughput yang dikhususkan di seluruh dunia.
  • Latensi milidetik satu digit pada persentil ke-99.
  • Ketersediaan tinggi terjamin.
  • 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 utama:

Memulai

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.

Pasang paket @azure/data-tables

Cara yang disukai untuk menginstal pustaka klien Azure Tables untuk JavaScript adalah dengan menggunakan manajer 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 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 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 harap 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 diperbolehkan: *
  • 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

Mengimpor paket

Untuk menggunakan klien, impor paket dalam file Anda:

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

Atau, secara selektif hanya mengimpor jenis yang Anda butuhkan:

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

Membuat klien layanan Tabel

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

TableServiceClient dengan AzureNamedKeyCredential

Anda dapat membuat instans TableServiceClient dengan AzureNamedKeyCredential meneruskan nama akun dan kunci akun sebagai argumen. (Nama akun dan kunci akun dapat diperoleh dari portal microsoft Azure.) [HANYA TERSEDIA DI RUNTIME 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 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 , identitas terautentikasi TokenCredentialharus memiliki peran "Kontributor Data Tabel Penyimpanan" atau "Pembaca Data Tabel Penyimpanan".

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

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 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.

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

Mencantumkan tabel di akun

Anda dapat mencantumkan tabel dalam akun melalui instans yang TableServiceClient memanggil listTables fungsi. Fungsi ini mengembalikan yang PageableAsyncIterator dapat Anda gunakan menggunakan 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();

Membuat tabel baru

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

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

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

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

Membuat klien tabel

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

TableClientdenganAzureNamedKeyCredential

Anda dapat membuat instans TableClient dengan AzureNamedKeyCredential meneruskan nama akun dan kunci akun sebagai argumen. (Nama akun dan kunci akun dapat diperoleh dari portal microsoft Azure.) [HANYA TERSEDIA DI RUNTIME 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 dengan TokenCredential (Azure Active Directory)

Tabel Azure 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 , identitas terautentikasi TokenCredentialharus memiliki peran "Kontributor Data Tabel Penyimpanan" atau "Pembaca Data Tabel Penyimpanan".

Dengan paket ini @azure/identity , Anda dapat mengotorisasi permintaan dengan mulus di lingkungan pengembangan dan produksi. Untuk mempelajari selengkapnya tentang integrasi Azure AD di Azure Storage, lihat README 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 dengan Token SAS

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

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

Tabel Azure 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 , identitas terautentikasi TokenCredentialharus memiliki peran "Kontributor Data Tabel Penyimpanan" atau "Pembaca Data Tabel Penyimpanan".

Dengan paket ini @azure/identity , Anda dapat mengotorisasi permintaan dengan mulus di lingkungan pengembangan dan produksi. Untuk mempelajari selengkapnya tentang integrasi Azure AD di Azure Storage, lihat README 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
);

Mencantumkan Entitas dalam tabel

Anda dapat mencantumkan entitas dalam tabel dengan melalui instans yang TableClient memanggil listEntities fungsi. Fungsi ini mengembalikan yang PageableAsyncIterator dapat Anda gunakan menggunakan 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();

Membuat entitas baru dan menambahkannya ke tabel

Anda dapat membuat Entitas baru dalam tabel dengan melalui instans yang TableClient memanggil createEntity fungsi . Fungsi ini mengambil entitas untuk disisipkan sebagai parameter. Entitas harus berisi partitionKey dan 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();

Emulator Azurite dan Storage

SDK Klien Azure Tables juga berfungsi dengan Azurite, emulator server yang kompatibel dengan Azure Storage dan Tables API. Silakan lihat (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 selengkapnya). 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 http titik akhir.

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

Pencatatan

Mengaktifkan pengelogan dapat membantu menemukan 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:

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

setLogLevel("info");

Langkah berikutnya

Sampel kode lainnya segera hadir Masalah#10531

Berkontribusi

Proyek ini menyambut baik 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.

Ketika Anda mengirimkan permintaan tarik, 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 repos menggunakan CLA kami.

Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Tata Tertib atau hubungi opencode@microsoft.com untuk pertanyaan atau komentar lainnya.

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

Tayangan