【问题标题】:How can I access a specific folder inside firebase storage from a cloud function?如何从云功能访问 Firebase 存储中的特定文件夹?
【发布时间】:2019-05-27 08:35:29
【问题描述】:

我是第一次使用 Firebase 云功能存储。 我成功了 使用以下命令对默认文件夹执行更改:

exports.onFileUpload = functions.storage.bucket().object().onFinalize(data => {
const bucket = data.bucket;
const filePath = data.name;
const destBucket = admin.storage().bucket(bucket);
const file = destBucket.file(filePath);

但现在我希望从存储中的文件夹触发该功能 像这样的文件夹

我该怎么做?

【问题讨论】:

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


    【解决方案1】:

    目前无法为某些文件路径配置触发条件,类似于您可以使用数据库触发器执行的操作。

    即你不能'User_Pictures/{path}'设置云存储触发器

    你要做的是在函数被触发后检查the object attributes并在那里进行相应的处理。

    您可以为要处理的每种情况创建一个触发器函数,如果它不是您要查找的路径,则停止该函数。

    functions.storage.object().onFinalize((object) => {
      if (!object.name.startsWith('User_Pictures/')) {
        console.log(`File ${object.name} is not a user picture. Ignoring it.`);
        return null;
      }
    
      // ...
    })
    

    或者你做一个主处理函数,将处理分派给不同的函数

    functions.storage.object().onFinalize((object) => {
      if (object.name.startsWith('User_Pictures/')) {    
        return handleUserPictures(object);
      } else if (object.name.startsWith('MainCategoryPics/')) {
        return handleMainCategoryPictures(object);
      }
    })
    

    【讨论】:

    • 谢谢,它工作得很好。我会将其标记为正确答案。但我想在 User_Pictures 文件夹中输入一个文件夹,如 User_Pictures/{id}/profilePics 你能指定如何做到这一点吗?
    • 谷歌云存储实际上是doesn't have any concept of hierarchical folder structure。所以你需要使用正则表达式或字符串分割/ 字符来完成你的任务。
    猜你喜欢
    • 2019-04-16
    • 2019-08-08
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2018-07-15
    • 2019-02-14
    • 2018-11-13
    相关资源
    最近更新 更多