Sdílet prostřednictvím


Výpis kontejnerů objektů blob pomocí TypeScriptu

Když vypíšete kontejnery v účtu Azure Storage z kódu, můžete zadat řadu možností pro správu způsobu vrácení výsledků ze služby Azure Storage. Tento článek ukazuje, jak vypsat kontejnery pomocí klientské knihovny Azure Storage pro JavaScript.

Požadavky

  • Příklady v tomto článku předpokládají, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou Azure Blob Storage pro JavaScript. Další informace o nastavení projektu, včetně instalace balíčku, importu modulů a vytvoření autorizovaného klientského objektu pro práci s datovými prostředky, najdete v tématu Začínáme se službou Azure Blob Storage a TypeScriptem.
  • Autorizační mechanismus musí mít oprávnění k výpisu kontejnerů objektů blob. Další informace najdete v pokynech k autorizaci pro následující operaci rozhraní REST API:

O možnostech výpisu kontejnerů

Pokud chcete vypsat kontejnery v účtu úložiště, vytvořte objekt BlobServiceClient a pak volejte následující metodu:

Výpis kontejnerů s volitelnou předponou

Ve výchozím nastavení vrátí operace výpisu najednou až 5 000 výsledků.

BlobServiceClient.listContainers vrátí seznam ContainerItem objektů. Pomocí containerItem.name vytvořte ContainerClient , abyste získali úplnější objekt ContainerProperties .

// return up to 5000 containers
async function listContainers(
  blobServiceClient: BlobServiceClient,
  containerNamePrefix: string
): Promise<void> {
  const options: ServiceListContainersOptions = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,
    prefix: containerNamePrefix
  };

  for await (const containerItem of blobServiceClient.listContainers(options)) {
    // ContainerItem
    console.log(`For-await list: ${containerItem.name}`);

    // ContainerClient
    const containerClient: ContainerClient =
      blobServiceClient.getContainerClient(containerItem.name);

    // ... do something with container
    // containerClient.listBlobsFlat({    includeMetadata: true,
    // includeSnapshots: false,
    // includeTags: true,
    // includeVersions: false,
    // prefix: ''});
  }
}

Výpis kontejnerů se stránkováním

Pokud chcete vrátit menší sadu výsledků, zadejte nenulovou hodnotu pro velikost stránky výsledků, která se má vrátit.

Pokud váš účet úložiště obsahuje více než 5 000 kontejnerů nebo pokud jste zadali velikost stránky tak, aby operace výpisu vrátila podmnožinu kontejnerů v účtu úložiště, azure Storage vrátí token pro pokračování se seznamem kontejnerů. Token pro pokračování je neprůhlená hodnota, kterou můžete použít k načtení další sady výsledků ze služby Azure Storage.

V kódu zkontrolujte hodnotu tokenu pokračování a zjistěte, jestli je prázdný. Pokud je token pokračování prázdný, sada výsledků se dokončí. Pokud token pokračování není prázdný, zavolejte metodu výpisu znovu a předejte token pro pokračování, který načte další sadu výsledků, dokud token pokračování nebude prázdný.

async function listContainersWithPagingMarker(
  blobServiceClient: BlobServiceClient
) {
  // add prefix to filter list
  const containerNamePrefix = '';

  // page size
  const maxPageSize = 2;

  const options: ServiceListContainersOptions = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,
    prefix: containerNamePrefix
  };

  let i = 1;

  let iterator = blobServiceClient
    .listContainers(options)
    .byPage({ maxPageSize });
  let response = (await iterator.next()).value;

  // Prints 2 container names
  if (response.containerItems) {
    for (const container of response.containerItems) {
      console.log(`IteratorPaged: Container ${i++}: ${container.name}`);
    }
  }

  // Gets next marker
  const marker = response.continuationToken;

  // Passing next marker as continuationToken
  iterator = blobServiceClient
    .listContainers()
    .byPage({ continuationToken: marker, maxPageSize: maxPageSize * 2 });
  response = (await iterator.next()).value;

  // Print next 4 container names
  if (response.containerItems) {
    for (const container of response.containerItems) {
      console.log(`Container ${i++}: ${container.name}`);
    }
  }
}

K filtrování výsledků s předponou použijte parametr options metody listContainers .

Filtrování výsledků pomocí předpony

Chcete-li filtrovat seznam kontejnerů, zadejte řetězec pro vlastnost předpony. Řetězec předpony může obsahovat jeden nebo více znaků. Azure Storage pak vrátí pouze kontejnery, jejichž názvy začínají danou předponou.

async function listContainers(
  blobServiceClient: BlobServiceClient,
  containerNamePrefix: string
) {

  const options: ServiceListContainersOptions = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,

    // filter by prefix
    prefix: containerNamePrefix
  };

  for await (const containerItem of blobServiceClient.listContainers(options)) {


    // do something with containerItem

  }
}

Zahrnout metadata do výsledků

Pokud chcete vrátit metadata kontejneru s výsledky, zadejte hodnotu metadat pro výčet BlobContainerTraits. Azure Storage obsahuje metadata s každým vráceným kontejnerem, takže metadata kontejneru nemusíte načítat jako samostatnou operaci.

async function listContainers(
  blobServiceClient: BlobServiceClient,
  containerNamePrefix: string
) {

  const options: ServiceListContainersOptions = {
    includeDeleted: false,
    includeSystem: true,
    prefix: containerNamePrefix,

    // include metadata
    includeMetadata: true,
  };

  for await (const containerItem of blobServiceClient.listContainers(options)) {

    // do something with containerItem

  }
}

Zdroje informací

Další informace o výpisu kontejnerů pomocí klientské knihovny Azure Blob Storage pro JavaScript najdete v následujících zdrojích informací.

Operace rozhraní REST API

Sada Azure SDK pro JavaScript obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat JavaScriptu. Metody klientské knihovny pro výpis kontejnerů používají následující operaci rozhraní REST API:

Ukázky kódu

Prostředky klientské knihovny

Viz také