是否有可能编写一个firebase云函数,该函数在firebase存储中创建新的fila时触发-onFinalize(但我们事先不知道确切的存储桶)?
在我的Firebase存储中,有一个文件夹'loads',而在我里面,有一个名为load id的文件夹,如:
我想在这些文件夹之一中创建新文件时触发云功能。我不知道在andvance中将在哪里创建文件。我不知道这是否有可能。这就是为什么我需要一个建议。
我的主要目标是将2个pdf文件合并到一个云功能中。在前端的我的应用程序(用vuejs编写的TMS)中,我使用html2canvas / jsPDF创建confirmationOrder.pdf,然后将其保存到storage / loads / $ {loadID}。之后,用户可以手动将POD.pdf上传到同一存储桶中。当发生这种情况时,我希望我的云功能将这两个pdf合并到一个新文件中(在同一存储桶中)。但是我又一次不知道这个桶。
非常感谢您的帮助。抱歉,如果我的解释似乎不够清楚。英语不是我的母语。
[如果您确实使用不同的buckets,或者您要检测在给定存储桶中创建文件的不同“路径”(例如,获取${loadID}
的值,如您的问题)。
无论如何,它并没有真正改变您问题的答案,因为,正如[C0]中所述:
取决于您是否要将功能范围限制为特定范围云存储存储桶或使用默认存储桶,请使用以下之一以下:
documentation侦听默认存储桶上的对象更改。
functions.storage.object()
侦听特定存储桶上的对象更改。
因此,如果要定位不同的存储桶,则需要按照以下所示的模型/模板声明不同的Cloud Functions。
因此,用于特定存储桶(默认一个存储桶或特定于另一个存储桶的存储桶),可以在向该存储桶添加文件时触发云功能,如下所示:
functions.storage.bucket('bucketName').object()
并且,如代码中所示,由于我们使用exports.yourCloudFunction = functions.storage.object().onFinalize(async (object) => {
const filePath = object.name; // File path in the bucket.
//...
});
事件处理程序,因此您可以通过使用onFinalize
对象的onFinalize
属性(其类型为name
)来获取此新文件的路径。
然后,您可以使用某些name
方法从该路径中提取您在问题中引用的object
,并再次使用此值在Firestore数据库中创建文档。