【问题标题】:Get Only The Top Level Objects of A Bucket仅获取存储桶的顶级对象
【发布时间】:2020-03-12 17:36:45
【问题描述】:

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

只有我想获得顶级对象。我正在尝试跟随nodejs storage samples files.js,当我尝试“前缀”和“分隔符”的不同组合时,我很难获得顶级对象。我已经尝试使用“/”分隔符的“”前缀。我尝试了前缀“/”和分隔符“/”。我尝试了没有分隔符的“/”前缀。似乎没有什么可以让我只获得顶级对象的列表。我似乎总是得到整个存储桶中的所有文件。关于可能起作用的前缀和分隔符的正确参数有什么想法吗?还有其他我不知道的选项可以提供帮助吗?

更具体一点,给定以下 blob:

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

我只是想要

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

我尝试过的几件事:

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

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

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

  • 没有结果...

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

  • 没有结果...

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

  • 没有结果...

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

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

...如我所料;但是我再次无法找出前缀和分隔符的正确组合来获得我想要的两个顶级对象结果:

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

【问题讨论】:

  • 在您的示例中,当您说“似乎没有任何效果”时……每个示例收到的输出是什么?阅读文档似乎说“”的前缀和“/”的分隔符可能有效......你发现了什么?
  • 感谢您的回复。我用这些额外的细节更新了我的 OP。

标签: node.js google-cloud-storage


【解决方案1】:

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

我确实想在我的应用程序中使用 async/await,并尝试/catch,因此以getFiles 页面上的代码示例为例,我能够推断出我可以通过这样做得到我需要的东西:

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

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

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

【讨论】:

  • 谢谢它的工作。文件夹位于 apiResponse.prefixes
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 2021-10-10
  • 1970-01-01
  • 2013-12-27
相关资源
最近更新 更多