仅获取存储桶的顶级对象

时间:2019-11-16 23:18:24

标签: node.js google-cloud-storage

我的问题与此how to get a list of files in a google cloud storage folder using node js类似。

仅尝试获取顶级对象。我在这里尝试nodejs storage samples files.js,并且当我尝试使用“前缀”和“分隔符”的不同组合时,我很难获得顶级对象。我尝试使用前缀“ /”和分隔符“ /”。我尝试使用前缀“ /”和分隔符“ /”。我尝试了没有分隔符的前缀“ /”。似乎没有任何办法让我仅获得顶层对象的列表。我似乎总是在整个存储桶中获取所有文件。关于前缀和分隔符的正确参数可能有用的任何想法?还有其他我不知道的选项可以帮助您吗?

具体来说,考虑到以下blob:

  • folder1 / file1.txt
  • folder2 / file2.txt

我只想要

  • 文件夹1 /
  • 文件夹2 /

我尝试过的几件事:

前缀:“”,分隔符:“”,结果:

  • 文件夹1 /
  • folder1 / file1.txt
  • 文件夹2 /
  • folder2 / file2.txt

前缀:“”,分隔符:“ /”,结果:

  • 没有结果...

前缀:“ /”,分隔符:“”,结果:

  • 没有结果...

前缀:“ /”,分隔符:“ /”,结果:

  • 没有结果...

前缀:“ folder1 /”,分隔符:“”,结果:

  • 文件夹1 /
  • folder1 / file1.txt

...正如我所期望的那样;但是,再次我不能弄清楚前缀和分隔符的正确组合,只是得到我想要的两个顶部对象结果:

  • 文件夹1 /
  • 文件夹2 /

1 个答案:

答案 0 :(得分:1)

我认为我终于找到了答案。答案是在其他网站上获取其文档。特别是this sitethis page (for Bucket.getFiles())。他们的示例显示了具有(err,文件,nextQuery,apiResponse)参数的回调。这很奇怪,因为即使这个站点也没有提到nextQuery和apiResponse作为GetFilesCallback的参数。

我确实想使用async / await,并尝试/捕获我的应用程序,因此以getFiles页上的代码示例为例,我可以推断出这样做可以得到所需的信息:< / p>

const [files, nextQuery, apiResponse] = await storage.bucket(bucketName).getFiles({autoPaginate: false, delimiter: "/", prefix: ""});

然后我个人发现“ apiResponse”中的数据比文件中的有用得多。我正在寻找的是apiResponse.itemsapiResponse.prefixes

我很惊讶,没有任何文档显示apiResponse的外观,GetFilesCallback页面甚至也没有将其显示为可能的参数。无论如何,我都能找到想要的东西。我认为在我的用例中,我将使用apiResponse回调参数而不是files参数。