【问题标题】:Cloud Functions: Delete file on Cloud Storage when Firestore document is deletedCloud Functions:删除 Firestore 文档时删除 Cloud Storage 上的文件
【发布时间】:2018-08-02 09:51:06
【问题描述】:

我有一个监听 onDelete 事件的云函数。删除文档时,我还希望删除存储中的关联文件。 目前我只有下载 URL(https 链接)作为字段存储在文档中。

如何在函数中选择文件?这是可能的还是我应该将文件的存储位置(路径)存储在文档中并使用它来做:

storage.bucket(<my-bucket>).file(<path>).delete()

【问题讨论】:

  • 默认存储桶应该可以从 Admin SDK 获得,var bucket = admin.storage().bucket();。如果这对您不起作用,请使用minimum code that reproduces where you are stuck 更新您的问题。
  • 谢谢,回答!我使用“@google-cloud/storage”包来获取存储桶。我在官方文档中找不到如何使用带有 firestore 的 admin 包的信息。但是我得到了存储桶,挑战是如何获取正确的文件。
  • 有关如何使用 Admin SDK 获取默认 Cloud Storage 存储分区的信息:firebase.google.com/docs/storage/admin/…
  • 泰!使用 admin sdk 而不是 @google-cloud/storage 之类的模块有什么好处?
  • 这个问题要问的是云函数是否能够仅使用下载 URL 检索存储引用,因为可以在 web 客户端上使用 firebase.storage( ).refFromURL(url) 但似乎没有使用管理 SDK。总体而言,云功能的存储 SDK 似乎不完整,尚不清楚它何时会更恰当地集成到 Firebase 中。

标签: node.js firebase google-cloud-storage google-cloud-functions firebase-storage


【解决方案1】:

Cloud Storage SDK 无法将 HTTPS 下载 URL 转换为存储分区中的文件路径。如果您需要知道 Cloud Storage 中文件的路径,则应将该路径作为另一个字段存储在数据库中。这样可以在需要时轻松返回到您的存储桶以删除文件。

【讨论】: