Firebase Storage onFinalize中object.resourceState返回undefined问题
解决Firebase云函数onFinalize中object.resourceState返回undefined的问题
嘿,我来帮你理清这个问题哈!你遇到的resourceState返回undefined的情况,核心原因是这个字段根本就不是onFinalize触发器事件对象里的属性,具体来说:
触发器的字段差异
Firebase Storage的不同触发器,提供的事件对象字段是不一样的:
onFinalize:这个触发器只会在对象成功上传/更新完成时触发,触发的前提就是对象已经处于「存在」状态了,所以Firebase压根没在这个事件的object里加入resourceState字段——毕竟没必要多此一举嘛。onChange:这个触发器会覆盖对象创建、更新、删除所有场景,这时候才需要resourceState(值为exists或not-exists)来区分当前是哪种事件类型,所以这个字段只在onChange的事件对象里存在。
对应的解决方案
根据你的需求,有两种处理方式:
- 如果你只是在处理对象上传完成后的逻辑,那完全不需要
resourceState——能进入onFinalize函数,就说明对象肯定是存在的,直接写业务逻辑就行。 - 如果你需要同时处理对象的创建/更新和删除场景,那得把触发器改成
onChange,示例代码如下:
exports.onStorageChange = functions.storage.object().onChange((object, context) => { console.log(object.resourceState); // 这里就能正常拿到'exists'或'not-exists'了 if (object.resourceState === 'exists') { // 处理对象上传/更新后的逻辑 } else if (object.resourceState === 'not-exists') { // 处理对象删除后的逻辑 } });
内容的提问来源于stack exchange,提问作者Ashu.mkb
相关产品推荐
相关产品推荐

