首页 > 解决方案 > 仅获取存储桶的顶级对象

问题描述

我的问题与如何使用节点 js 获取 google 云存储文件夹中的文件列表类似。

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

更具体地说,给定以下 blob:

我只是想

我尝试过的几件事:

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

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

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

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

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

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

标签: node.jsgoogle-cloud-storage

解决方案


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

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

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

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

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


推荐阅读