【问题标题】:How should I save references to firebase storage objects?我应该如何保存对 Firebase 存储对象的引用?
【发布时间】:2020-04-17 20:48:37
【问题描述】:
  1. 按名称存储引用 (users/1/profile.png)。那么就需要一直生成URL。
const url = await firebase
  .storage()
  .ref('users/1/profile.png')
  .getDownloadURL()
  1. 按 URL 存储引用。访问令牌可能会被撤销,这会导致尝试生成新令牌并在数据库中更新它时出现问题。
const url = await firebase
  .storage()
  .refFromURL(invalidURL)
  .getDownloadURL()
  1. 与#1 相关。仅按文件名存储,因此无需更新数据库引用即可移动文件。
const url = await firebase
  .storage()
  .ref(`users/${user.id}/${user.image}`)
  .getDownloadURL()

【问题讨论】:

  • 做最适合您需要的那个。正如您所发现的那样,两者都有优点和缺点。
  • 我很困惑需要打电话给getDownloadURL()。我不确定频繁调用该方法是否存在性能或成本问题。
  • 您可以自己进行基准测试。

标签: firebase firebase-storage


【解决方案1】:

下载 URL 和参考路径是两个不同的东西,我会酌情存储它们(有时两者都存储)。

当您想直接从存储中提供文件时,请存储 下载 URL(例如,<img> 标记)。

当您需要保留对文件的引用以便以后修改时,存储 引用路径

调用getDownloadURL() 确实会触发网络请求,因此建议尽可能缓存结果以避免不必要的额外工作/延迟。

【讨论】:

  • 同上:如果您需要例如编辑图像(因为它避免查找),我会保留路径,如果您需要共享图像以供他人阅读,我会保留下载 URL(因为它避免了昂贵的查找)。另见stackoverflow.com/questions/52252520/…
猜你喜欢
  • 2019-07-07
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 2012-10-28
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多