node.js - 仅获取存储桶的顶级对象
问题描述
我的问题与如何使用节点 js 获取 google 云存储文件夹中的文件列表类似。
只有我想获得顶级对象。我试图在这里跟随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/
解决方案
我想我终于找到了答案。答案在他们的文档的不同站点中。特别是这个站点和这个页面(用于 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
参数。
推荐阅读
- c# - 使用 AutoMapper 协助迭代对象
- python - 如何更改 iopub_data_rate_limit = 10000000 的设置?
- sql - 如何构建来自 plsql 的 json 请求?
- javascript - 是否有技术或代码风格的原因不命名您的 IIFE 函数?
- go - 解码 utf8 字符的问题 - šđžčć
- oracle - Oracle DB 使用 Apache NiFi 进行大查询。查询同一个表时出错
- c# - 有没有办法在 Akka.NET 的给定节点上获取当前可用的所有实例化角色
- node.js - Angular 6 - 身份验证管理员用户和 root 用户
- ruby-on-rails - 如何永久解锁 Google 帐户验证码以在我的 heroku 应用中发送电子邮件?
- java - 是否可以让 nd4j 在 linux-arm 系统上工作?