如何从存储URL获取Firebase存储路径?

时间:2019-06-25 21:48:53

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

我正在尝试编写迁移脚本,以将存储在firestore中的存储URL从开发项目复制到暂存和生产项目。

我正在查询Firestore中的所有文档,过滤包含两个字符串之一的文档:

https://firebasestorage.googleapis.com/v0/b/${BUCKET_ID}/o/{FILEPATH}
https://storage.googleapis.com/${BUCKET_ID}/{FILEPATH}

我注意到第一个用于从javascript客户端上传图像,第二个用于从Cloud Functions上传图像。

是否可以轻松地从URL中获取存储路径而不进行解析? 有没有更简单的方法来实现将存储URL迁移到新项目?

注意:我想从URL获取存储路径。我知道另一种方法很简单。

1 个答案:

答案 0 :(得分:0)

您要从存储的网址中获取“ {FILEPATH}”部分,这是我建议实现此目标的javascript代码:

  var data = ['https://firebasestorage.googleapis.com/v0/b/my_bucket_id/o/file_path1','https://storage.googleapis.com/my_bucket_id/file_path2','https://firebasestorage.googleapis.com/v0/b/my_bucket_id/o/file_path3','https://storage.googleapis.com/my_bucket_id/file_path4','https://storage.googleapis.com/my_bucket_id/file_path5','https://storage.googleapis.com/my_bucket_id/file_path6','https://firebasestorage.googleapis.com/v0/b/my_bucket_id/o/file_path7']; //sample data
  
  var treated_data = [];
  
  for (url of data) {
    var list = url.split('/'); // split the url by /
    treated_data.push(list[list.length - 1]); // grabbing and saving the last part.
  }
  
  console.log(treated_data); // here you have all your FILEPATH part

注意:

  • 根据用于处理数据的实际结构修改代码。

  • 由于FILEPATH部分位于您要检索的url的末尾,因此无论您处理的是哪个url都没有关系,您只会得到最后一部分。

  • 如果这对您没有帮助,请提供有关您的问题的更多信息(您的迁移过程如何,您使用哪个脚本来处理迁移...)