的firebase云功能onFinalize触发没有预定义的桶?

尼克斯托亚诺维奇

是否可以编写一个Firebase云函数来触发何时在Firebase存储中创建新的fila-onFinalize(但我们事先不知道确切的存储桶)?

在我的Firebase存储中,有一个文件夹“ loads”,而在我中,有一个名为load id的文件夹,例如:

  • / loads / -Lw1UySdunYyFMrrV6tl
  • / loads / -LwisA5hkNl_uxw3k36f
  • / loads / -LwkPUm-q7wNv-wZ49Un

https://ibb.co/NnQkTyC这是存储的屏幕截图

当在这些文件夹之一中创建新文件时,我想触发云功能。我不知道andvance将在哪里创建文件。我不知道这是否有可能。这就是为什么我需要一个建议。

我的主要目标是将2个pdf文件合并到一个云功能中。在前端的应用程序(用vuejs编写的TMS)中,我使用html2canvas / jsPDF创建confirmationOrder.pdf,然后将其保存到storage / loads / $ {loadID}。之后,用户可以在同一存储桶上手动上传POD.pdf。当发生这种情况时,我希望我的云功能将这两个pdf合并到一个新文件中(在同一存储桶中)。但是我又一次不知道这个桶。

这是我在前端上传PDF的方法:

 async uploadConfPDF({ commit }, payload) {
      const PDF = payload.PDF;
      const loadID = payload.loadID;
      const fileName = payload.fileName;

      const fileData = await firebase
        .storage()
        .ref(`loads/${loadID}/${fileName}.pdf`)
        .put(PDF);

      const confOrderURL = await fileData.ref.getDownloadURL();

      return confOrderURL;
    }, 

非常感谢您的帮助。对不起,如果我的解释似乎不够清楚。英语不是我的母语。

雷诺·塔内克(Renaud Tarnec)

修改您的问题后再进行编辑

根据您的代码和Cloud Storage控制台的打印屏幕,您正在项目的默认存储区中工作,该位置的URL为gs://alex-logistics.appspot.com

正如我们在Cloud Storage控制台的打印屏幕上看到的那样,存储桶中的文件以分层结构显示,就像本地硬盘上的文件系统一样。但是,这只是呈现文件的一种方式:存储桶中没有真正的文件夹/目录,Cloud Storage控制台仅使用文件路径的不同部分来“模拟”文件夹结构。


因此,基于以上几段,我认为您的问题可以重新表述为“在Cloud Function中,如何提取上传到Firebase项目默认存储区的文件路径的不同部分? ”。

回答:

在将文件添加到默认存储桶时触发的云功能中,您可以按照以下方式获取文件路径:

exports.yourCloudFunction = functions.storage.object().onFinalize(async (object) => {

    const filePath = object.name; // File path in the bucket.

    //...

});

由于我们使用onFinalize事件处理程序,因此您可以使用类型name为的objectObject属性来获取此新文件的路径ObjectMetadata

然后,您可以使用某些String方法来从该路径中提取${loadID}您在问题中所指的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何写入具有从Firestore触发的Firebase云功能的云存储桶?

预定的 Firebase/云功能重叠问题

从 onFinalize Firebase 云函数获取回报

由于服务帐户没有必要的权限,因此无法在Firebase云功能中创建自定义令牌

Firebase的云功能是否按时触发?

Firebase云功能认证触发时间

如何在Firebase存储触发功能内获取公共下载链接:“ onFinalize”?

没有云存储的 Firebase 云函数

你可以通过触发事件火力谷歌的云功能没有服务器?

FileUtils没有显示建议为硒WebDriver中的屏幕快照功能导入预定义的类

Firebase云功能数据库触发器有时无法正确运行

没有预定义值的MySQL Set

有没有办法将多个 Firebase 云功能部署到自己的实例中?

用于没有域的静态服务的 Google 云存储桶

在没有存储桶的情况下在Firebase Cloud功能中使用外部资源(媒体)

Quanteda:具有预定义功能集的文档功能矩阵

Firebase云功能:来自引用人<empty>的请求被阻止。- 没有权限

为此预定义功能?

google.storage.object.finalize不触发Firebase云功能

是否可以根据用户的时区在 Firebase 中触发云功能?

如何在读取事件时触发Firebase云功能

从PubSub触发的云功能写入Firebase数据库

如何在密码更改后在Firebase中触发云功能?

用户删除时未触发Firebase云功能

具有实时数据库触发器的 Firebase 云功能:如何更新源节点?

手动触发预定或触发功能

Facebook Graph API预定义消息,但具有编辑功能

Firebase云功能-在OnUpdate云触发器中更新其他对象

有没有办法以编程方式为 Firebase 中的自定义存储桶设置安全规则?