Поделиться через


Отображение списка контейнеров BLOB-объектов с помощью JavaScript

При получении списка контейнеров в учетной записи хранения Azure из кода можно указать ряд параметров для управления способом возврата результатов из службы хранилища Azure. В этой статье объясняется, как получить список контейнеров BLOB-объектов с помощью клиентской библиотеки службы хранилища Azure для JavaScript.

Необходимые компоненты

  • В примерах этой статьи предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для JavaScript. Сведения о настройке проекта, включая установку пакетов, импорт модулей и создание авторизованного клиентского объекта для работы с ресурсами данных, см. в статье "Начало работы с Хранилище BLOB-объектов Azure и JavaScript".
  • Механизм авторизации должен иметь разрешения для перечисления контейнеров BLOB-объектов. Дополнительные сведения см. в руководстве по авторизации для следующей операции REST API:

Сведения о параметрах перечисления контейнеров

Чтобы перечислить контейнеры в учетной записи хранения, создайте объект BlobServiceClient , а затем вызовите следующий метод:

Отображение списка контейнеров с дополнительным префиксом

По умолчанию операция перечисления возвращает до 5000 результатов за раз.

BlobServiceClient. ListContainers возвращает список объектов ContainerItem. Используйте containerItem.name для создания ContainerClient, чтобы получить более полный объект ContainerProperties.

async function listContainers(blobServiceClient, containerNamePrefix) {

  const options = {
    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 = blobServiceClient.getContainerClient(containerItem.name);

    // ... do something with container 
  }
}

Список контейнеров с разбиением по страницам

Чтобы вернуть меньший набор результатов, укажите ненулевое значение размера возвращаемой страницы результатов.

Если учетная запись хранения содержит более 5000 контейнеров или указан такой размер страницы, что операция получения списка возвращает подмножество контейнеров в учетной записи хранения, служба хранилища Azure возвращает маркер продолжения со списком контейнеров. Маркер продолжения — это непрозрачное значение, которое можно использовать для получения следующего набора результатов из службы хранилища Azure.

В коде проверьте значение маркера продолжения, чтобы определить, будет ли он пустым. Если маркер продолжения пустой, набор результатов будет полным. Если маркер продолжения не будет пустым, вызовите метод получения списка еще раз, передав ему маркер продолжения для получения следующего набора результатов, пока маркер продолжения не будет пустым.

async function listContainersWithPagingMarker(blobServiceClient) {

  // add prefix to filter list
  const containerNamePrefix = '';

  // page size
  const maxPageSize = 2;

  const options = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,
    prefix: containerNamePrefix
  }
  
  let i = 1;
  let marker;
  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
  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}`);
    }
  }
}

Используйте параметр options для метода listContainers для фильтрации результатов с префиксом.

Фильтрация результатов с помощью префикса

Чтобы отфильтровать список контейнеров, укажите строку для свойства prefix. Строка префикса может содержать один или несколько символов. Служба хранилища Azure возвращает только те контейнеры, имена которых начинаются с этого префикса.

async function listContainers(blobServiceClient, containerNamePrefix) {

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

    // filter with prefix
    prefix: containerNamePrefix
  }

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

    // do something with containerItem

  }
}

Включение метаданных в результаты

Чтобы получить метаданные контейнера с результатами, укажите значение metadata для операции перечисления BlobContainerTraits. Служба хранилища Azure добавляет метаданные к каждому возвращаемому контейнеру, поэтому дополнительно получать метаданные контейнера в отдельной операции не требуется.

async function listContainers(blobServiceClient, containerNamePrefix) {

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

    // include metadata 
    includeMetadata: true,
  }

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

    // do something with containerItem

  }
}

Ресурсы

Дополнительные сведения о перечислении контейнеров с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для JavaScript см. в следующих ресурсах.

Операции REST API

Пакет SDK Azure для JavaScript содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы JavaScript. Методы клиентской библиотеки для перечисления контейнеров используют следующую операцию REST API:

Примеры кода

Ресурсы клиентской библиотеки

См. также