用Firebase Web的小功能分享 (2)

  • 上传档案後制作超连结下载档案 - 抓档案名字跟下载的URL code

因为抓档案名字用forEach去抓,没有固定的顺序每次抓都会变动,
因此这边就决定先抓名字之後再用名字去抓URL然後一起塞进MAP里储存,
然後依照MAP size去判断之前是否抓过,如果抓过就直接读取MAP里储存的内容,这样就会固定一个顺序了。

function load_data(){

  var listRef = firebase.storage().ref(路径);
  var itemName;

  if(nameMap.size == 0){
    listRef.listAll().then((res) => {
      res.items.forEach((itemRef) => { 
        itemRef.getMetadata().then((metadata) => {

          itemName = metadata.name;
          geturl(itemName); //读URL

        }).catch((error) => {
          console.log(error);
        });
      });
    
    }).catch((error) => {
      console.log(error);
    });

  }
  else{
    nameMap.forEach((value, key) => {
      //这边放入直接读取已有的map的code
    })
    
  }
  
}

function geturl(itemName){
  var itemURL;
  const listRef = firebase.storage().ref(路径);
  if(nameMap.size == 0){
    listRef.child(itemName).getDownloadURL().then((url) => {
    itemURL = url;
    nameMap.set(itemName,itemURL);
      
    }).catch((error) => {
      console.log(error);
    });

  }else{
    console.log("url failed");
  }
}

<<:  【从零开始的 C 语言笔记】第十七篇-if条件式

>>:  用Firebase Web的小功能分享 (3)

【这些年我似是非懂的 Javascript】那些年我睡掉的物件导向 #浅谈 #Part 1

嗨~各位好久不见, 最近几乎都在写一些自己喜欢的专案, 不知不觉已经两周了呢 (欢乐的时光总是过得...

第26天 - 文件审核系统(4)_删除档案的部分

删除档案的部分,首先要先把栏位列印出来 资料表一样参考第23天的文章 https://ithelp....

Day_15 Terminal & CLI

接下来会介绍到一些套件包、常用网路功能等应用。在开始介绍这些之前,一定要先聊聊termainl。先前...

Java学习之路05---运算子

架构图 前言 表达式是程序进行算术运算中的表示方式,我们可以简单地把表达式拆解为表达式 = 运算子 ...

[Day - 13] - Spring 依赖性注入元件管理运作与方法

Abstract 无论何种时候,每种系统的开发元件势必都有先後启动顺序,如何有效管控每项元件的启动流...