仅获取存储桶的顶级对象

2024-02-24

我的问题与此类似如何使用node js获取谷歌云存储文件夹中的文件列表 https://stackoverflow.com/questions/49684942/how-to-get-a-list-of-files-in-a-google-cloud-storage-folder-using-node-js.

只有我试图获取顶级对象。我试图跟随这里nodejs存储样本files.js https://github.com/googleapis/nodejs-storage/blob/000d0929ced42a8457f81d46e2ff323182fa2023/samples/files.js#L50,当我尝试“前缀”和“分隔符”的不同组合时,我很难获得顶级对象。我尝试过使用前缀“”和分隔符“/”。我尝试过使用前缀“/”和分隔符“/”。我尝试使用不带分隔符的“/”前缀。似乎没有什么可以让我只获得顶级对象的列表。我似乎总是获取整个存储桶中的所有文件。关于可能有效的前缀和分隔符的正确参数有什么想法吗?还有其他我不知道的选项可以提供帮助吗?

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

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

我只是想

  • folder1/
  • folder2/

我尝试过以下几件事:

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

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

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

  • 没有结果...

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

  • 没有结果...

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

  • 没有结果...

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

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

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

  • folder1/
  • folder2/

我想我终于找到了答案。答案是在另一个网站上的文档。具体来说这个网站 https://googleapis.dev/nodejs/storage/latest/index.html, and 此页面(针对 Bucket.getFiles()) https://googleapis.dev/nodejs/storage/latest/Bucket.html#getFiles。他们的示例显示了一个具有 (err, files, nextQuery, apiResponse) 参数的回调。这很奇怪,因为即使这个网站也没有提到 nextQuery 和 apiResponse 作为参数获取文件回调 https://googleapis.dev/nodejs/storage/latest/global.html#GetFilesCallback.

我确实想在我的应用程序中使用 async/await 和 try/catch,因此请参考getFiles https://googleapis.dev/nodejs/storage/latest/Bucket.html#getFiles页面,我能够推断出我可以通过这样做得到我需要的东西:

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

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

我只是很惊讶没有任何文档显示那是什么apiResponse应该看起来像这样,GetFilesCallback 页面甚至没有将其显示为可能的参数。无论如何,我都能找到我想要的东西。我认为对于我的用例我会使用它apiResponse回调参数多于files范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅获取存储桶的顶级对象 的相关文章

随机推荐