仅获取存储桶的顶级对象

问题描述 投票:0回答:1

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

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

更具体一点,考虑到以下斑点:

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

我只想要

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

我尝试过的几件事:

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

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

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

  • 没有结果...

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

  • 没有结果...

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

  • 没有结果...

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

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

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

  • 文件夹1 /
  • 文件夹2 /
node.js google-cloud-storage
1个回答
1
投票

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

我确实想使用async / await,然后尝试/捕获我的应用程序,因此以getFiles页面上的代码示例为例,我可以推断出这样做可以得到所需的东西:

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

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

我很惊讶,没有文档显示apiResponse应该是什么样,GetFilesCallback页面甚至都没有将其显示为可能的参数。无论如何,我都能找到想要的东西。我认为对于我的用例,我将比apiResponse参数更多地使用files回调参数。

© www.soinside.com 2019 - 2024. All rights reserved.