Как получить доступ к метаданным большого двоичного объекта с помощью пакета SDK для Azure JavaScript?

Как прочитать метаданные для большого двоичного объекта в Azure с помощью JavaScript SDK?

Когда я перебираю капли, возвращаемые из указанного контейнера, я вижу свойство метаданных:

введите здесь описание изображения

Но он не определен, хотя с большим двоичным объектом определенно связаны метаданные:

введите здесь описание изображения

Что еще мне нужно сделать, чтобы заполнить метаданные?

import { BlobServiceClient, SharedKeyCredential } from "@azure/storage-blob";

const account = "<redacted>";
const accountKey = "<redacted>";
const sharedKeyCredential = new SharedKeyCredential(account, accountKey);
const blobServiceClient = new BlobServiceClient(`https://${account}.blob.core.windows.net`, sharedKeyCredential);
const containerClient = blobServiceClient.getContainerClient(podcastName);

const blobs = await containerClient.listBlobsFlat({ include: ["metadata"] });
for await (const blob of blobs) {
  console.log(blob.name);
  //blob.metadata is undefined
}

// package.json relevant dependencies
"dependencies": {
  "@azure/storage-blob": "^12.0.0-preview.2
}

comment
Можете ли вы отредактировать свой вопрос и включить код листинга BLOB-объектов?   -  person Gaurav Mantri    schedule 03.09.2019
comment
@GauravMantri Конечно же :)   -  person Chev    schedule 03.09.2019
comment
Действительно. Спасибо.   -  person Chev    schedule 03.09.2019


Ответы (2)


Я проверяю его значение null, затем использую getProperties (), чтобы получить метаданные, и это сработало, вы можете попробовать.

const containerName = "test";
const blobName = "test.txt";


let response;
let marker;

do {
    response = await containerURL.listBlobFlatSegment(aborter);
    marker = response.marker;
    for(let blob of response.segment.blobItems) {

        const url= BlockBlobURL.fromContainerURL(containerURL,blob.name);
        const pro=await url.getProperties(aborter);

        console.log(pro.metadata);

    }
} while (marker);

введите здесь описание изображения

person George Chen    schedule 03.09.2019

Вы можете получить свойства большого двоичного объекта с помощью метода getBlobMetadata.

var storage = require('azure-storage');
var blobService = storage.createBlobService();
var containerName = 'your-container-name';
var blobName = 'my-awesome-blob';
blobService.getBlobMetadata(containerName, blobName, function(err, result, response) {
    if (err) {
        console.error("Couldn't fetch metadata for blob %s", blobName);
        console.error(err);
    } else if (!response.isSuccessful) {
        console.error("Blob %s wasn't found container %s", blobName, containerName);
    } else {
        console.log("Successfully fetched metadata for blob %s", blobName);
        console.log(result.metadata);
    }
});

Для получения дополнительной информации вы можете обратиться к этому статья.

person Joey Cai    schedule 03.09.2019
comment
Извините, я должен был указать, что это более новый SDK. Я верю, что SDK v10. - person Chev; 03.09.2019