Firebase函数SDK 1.0.0 storage.onFinalize()无法按预期工作

时间:2018-04-04 01:06:12

标签: firebase google-cloud-functions

我使用Firebase功能检测到存储的上传事件,并将下载URL写入数据库,如下所示:

exports.processFile = functions.storage.object().onChange((event) => {
  const object = event.data,
        filePath = object.name;

  if (object.resourceState === 'exists') {
    // Do something
  }
}

收到有关SDK 1.0的电子邮件我更新了这个函数:

exports.processFile = functions.storage.object().onFinalize((object, context) => {
  const filePath = object.name;

  if (object.resourceState === 'exists') {
    // Do something
  }
}

更新后,该功能中断,所以我决定在日志中打印resourceState并获得undefined。发生了什么事?

1 个答案:

答案 0 :(得分:4)

在SDK 1.0之前,只有onChange()事件。它针对存储对象的所有更改触发,并且必须在对象元数据中测试resourceState以确定更改是创建,更新还是删除。

在SDK 1.0中,onChange()replaced by four events,无需测试resourceState的值:

  • onArchive()
  • onDelete()
  • onFinalize()
  • onMetadataUpdate()

虽然ObjectMetadata的文档仍然显示resourceState,但我的猜测是它已从SDK 1.0中删除,因为不再需要它。