如何使用Firebase函数获取存储桶中的文件列表



我正在尝试编写一个简单的函数,该函数将使用Firebase Cloud函数迭代Firebase存储中文件夹中的所有文件。我花了几个小时在网上尝试每一个例子,并阅读了文档。

这就是我目前拥有的:

exports.removeUnsizedImages = functions.pubsub.schedule('every 2 minutes').onRun((context) => {
const storage = admin.storage();
var storageRef = storage.ref();
storageRef.listAll().then(function(result) {
console.log("*", result);
})
});

我得到一个错误,storage.ref((不是一个函数。

如果我尝试:

storage.listAll()

它还告诉我listAll不是一个函数。

我真的没想到把文件放在文件夹里会这么难。

我做错了什么?

更新的代码现在有效

exports.removeUnsizedImages = functions.pubsub.schedule('every 24 hours').onRun((context) => {

admin.storage().bucket().getFiles({ prefix: "postImages/" }).then(function(data) {
const files = data[0];
files.forEach(function(image) {
console.log("***** ", image.name)
})
});

});

您正在使用的listAll是Firebase Storage Client SDK中的一个函数,而不是Admin SDK。

要获取Admin SDK中的所有文件,请尝试以下操作:

const allFiles = await admin.storage().bucket().getFiles({ prefix: "/user/images" })

这里的前缀是您想要列出的路径。

  • 如果您只指定前缀="a/",您将返回:
  • /a/1.text
  • /a/b/2.txt
  • 但是,如果指定前缀="a/"和分隔符="/",则返回:
  • /a/1.text

您只需使用.getFiles()即可获得整个bucket。更多详细信息可在文件中找到

相关内容

  • 没有找到相关文章

最新更新