【问题标题】:How can I get a list of files in my storage bucket using Firebase Functions如何使用 Firebase 函数获取存储桶中的文件列表
【发布时间】:2021-08-11 23:44:36
【问题描述】:

我正在尝试编写一个简单的函数,该函数将使用 Firebase 云函数遍历我在 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)
        })

    });
    
});

【问题讨论】:

标签: node.js firebase google-cloud-functions firebase-storage


【解决方案1】:

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

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

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

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

  • 如果您只指定前缀 = 'a/',您将返回:
  • /a/1.txt
  • /a/b/2.txt
  • 但是,如果您指定 prefix='a/' 和 delimiter='/',您将返回:
  • /a/1.txt

您可以使用.getFiles() 来获取整个存储桶。更多详情请见documentation

【讨论】:

  • 非常感谢!这正是我想要的。
猜你喜欢
  • 2021-11-11
  • 2016-02-06
  • 1970-01-01
  • 2017-10-16
  • 2016-09-01
  • 1970-01-01
  • 2016-03-05
  • 2016-02-01
  • 1970-01-01
相关资源
最近更新 更多