سرد حاويات الكائنات الثنائية كبيرة الحجم باستخدام TypeScript

عند سرد الحاويات في حساب Azure Storage من تعليمتك البرمجية، يمكنك تحديد عدد من الخيارات لإدارة كيفية إرجاع النتائج من Azure Storage. توضح هذه المقالة كيفية سرد الحاويات باستخدام مكتبة عميل Azure Storage لـ javaScript.

المتطلبات الأساسية

  • تفترض الأمثلة في هذه المقالة أن لديك بالفعل مشروعا تم إعداده للعمل مع مكتبة عميل Azure Blob Storage ل JavaScript. للتعرف على إعداد مشروعك، بما في ذلك تثبيت الحزمة واستيراد الوحدات النمطية وإنشاء كائن عميل معتمد للعمل مع موارد البيانات، راجع بدء استخدام Azure Blob Storage وTypeScript.
  • يجب أن يكون لآلية التخويل أذونات لسرد حاويات الكائن الثنائي كبير الحجم. لمعرفة المزيد، راجع إرشادات التخويل لعملية REST API التالية:

حول خيارات سرد الحاوية

لسرد الحاويات في حساب التخزين الخاص بك، قم بإنشاء كائن BlobServiceClient ثم قم باستدعاء الأسلوب التالي:

سرد الحاويات ذات البادئة الاختيارية

بشكل افتراضي، تعرض عملية السرد ما يصل إلى 5000 نتيجة في المرة الواحدة.

يعمل BlobServiceClient.listContainers على إرجاع قائمة من كائنات ContainerItem. استخدم containerItem.name لإنشاء ContainerClient للحصول على كائن 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: ''});
  }
}

سرد الحاويات مع تقسيم الصفحات

لإرجاع مجموعة أصغر من النتائج، قم بتوفير قيمة غير صفرية لحجم صفحة النتائج المراد إرجاعها.

إذا كان حساب التخزين الخاص بك يحتوي على أكثر من 5000 حاوية، أو إذا قمت بتحديد حجم صفحة بحيث تقوم عملية السرد بإرجاع مجموعة فرعية من الحاويات في حساب التخزين، فسيقوم Azure Storage بإرجاع رمز مميز للاستمرار مع قائمة الحاويات. الرمز المميز للاستمرار هو قيمة معتمة يمكنك استخدامها لاسترداد المجموعة التالية من النتائج من Azure Storage.

في التعليمات البرمجية الخاصة بك، تحقق من قيمة الرمز المميز للاستمرار لتحديد ما إذا كان فارغا أم لا. عندما يكون الرمز المميز للاستمرار فارغًا، تكون مجموعة النتائج كاملة. إذا لم يكن الرمز المميز للاستمرار فارغاً، فاتصل بطريقة الإدراج مرة أخرى، ومرر الرمز المميز للاستمرار لاسترداد المجموعة التالية من النتائج، حتى يصبح رمز المتابعة فارغاً.

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

استخدم معلمة الخيارات إلى أسلوب listContainers لتصفية النتائج باستخدام بادئة.

تصفية النتائج باستخدام البادئة

لتصفية قائمة الحاويات، حدد سلسلة لخاصية البادئة. يمكن أن تتضمن سلسلة البادئة حرفاً واحداً أو أكثر. ثم يقوم Azure Storage بإرجاع الحاويات التي تبدأ أسماؤها بهذه البادئة فقط.

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

  }
}

تضمين بيانات التعريف في النتائج

لإرجاع بيانات تعريف الحاوية مع النتائج، حدد قيمة بيانات التعريف لتعداد BlobContainerTraits. يضمن Azure Storage بيانات التعريف مع كل حاوية يتم إرجاعها، لذلك لا تحتاج إلى جلب بيانات تعريف الحاوية كعملية منفصلة.

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

  }
}

الموارد

لمعرفة المزيد حول سرد الحاويات باستخدام مكتبة عميل Azure Blob Storage ل JavaScript، راجع الموارد التالية.

عمليات واجهة برمجة تطبيقات REST

يحتوي Azure SDK ل JavaScript على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، ما يسمح لك بالتفاعل مع عمليات REST API من خلال نماذج JavaScript المألوفة. تستخدم أساليب مكتبة العميل لإدراج الحاويات عملية REST API التالية:

نماذج التعليمات البرمجية

موارد مكتبة العميل

(راجع أيضًا )