我使用 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 。到底是怎么回事?

最佳答案

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

在 SDK 1.0 中, onChange() 已经是 replaced by four events ,不再需要测试 resourceState 的值:

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

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

    关于Firebase 函数 SDK 1.0.0 storage.onFinalize() 未按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49641197/

    10-16 02:09