检查NodeJS的路径中是否存在斑点

时间:2018-11-18 07:18:39

标签: node.js azure azure-storage azure-storage-blobs

让我说我想在容器中上传blob->'azureblob'

路径:123 / human / a.json

我想检查路径中是否存在任何斑点:123 / human /

我为此找不到任何好的资源。

在c#How to check wether a CloudBlobDirectory exists or not?

中找到了它

在节点上找不到任何东西

2 个答案:

答案 0 :(得分:2)

如果您要做的只是检查虚拟目录中是否存在任何Blob,则可以在SDK中使用 listBlobsSegmentedWithPrefix 方法并尝试列出这些Blob。如果您得到的结果计数大于零,则表示目录中存在斑点。例如,看一下示例代码:

blobService.listBlobsSegmentedWithPrefix('azureblob', '123/human/', null, {
  delimiter: '',
  maxReults: 1
}, function(error, result) {
  if (!error) {
    const entries = result.entries;
    if (entries.length > 0) {
      console.log('Blobs exist in directory...');
    } else {
      console.log('No blobs exist in directory...');
    }
  }
});

如果要在虚拟目录中查找特定的Blob,则可以只使用SDK的 doesBlobExist 方法。例如,看一下示例代码:

blobService.doesBlobExist('azureblob', '123/human/a.json', function(error, result) {
  if (!error) {
    if (result.exists) {
      console.log('Blob exists...');
    } else {
      console.log('Blob does not exist...');
    }
  }
});

答案 1 :(得分:0)

由于didBlobExist返回了Promise,您可以尝试以下实现:

**

export async function doesBlobExist(
  connectionString,
  containerName,
  blobFileName
): Promise<boolean> {
  const promise: Promise<boolean> = new Promise((resolve, reject) => {
    try {
      const blobService = azure.createBlobService(connectionString);
      
      blobService.doesBlobExist(containerName, blobFileName, function (
        error,
        result
      ) {
        if (!error) {
          resolve(result.exists);
        } else {
          reject(error);
        }
      });
    } catch (err) {
      reject(new Error(err));
    }
  });
  return promise;
}

**