Firebase函数SDK 1.0.0 storage.onFinalize()无法正常工作

fun*_*ct7 3 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
  }
}
Run Code Online (Sandbox Code Playgroud)

收到有关SDK 1.0的电子邮件时,我像这样更新了功能:

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

  if (object.resourceState === 'exists') {
    // Do something
  }
}
Run Code Online (Sandbox Code Playgroud)

更新后,功能中断,因此我决定resourceState在日志中打印并得到一个undefined。到底是怎么回事?

Bob*_*der 5

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

在SDK 1.0中,onChange()已由四个事件代替,从而无需测试以下值resourceState

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

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

  • 嗯...这是一个很好的猜测。我希望Firebase团队可以更好地管理他们的文档。这不是我第一次感到困惑,因为不同的文件会说自己的话。 (2认同)