无法使用js循环下载Firebase存储文件

时间:2019-10-29 06:05:19

标签: javascript loops firebase-realtime-database firebase-storage

我正在尝试使用如下代码所示的javascript循环获取Firebase存储的某些文件的下载URL。它可以正确创建元素,但只会为第二个元素分配一个“ src”(在使用2个文件的情况下)。

var photosContainer = document.getElementById('photosContainer');
var photoNumber = firebase.database().ref('main/' + keyParent).child(key + '/number_photos');

photoNumber.on('value', function(snapshot){

  for(var i = 0; i < snapshot.val(); i++){

   var divPhoto = document.createElement('div');
   photosContainer.appendChild(divPhoto);
   var photo = document.createElement('img');
   photo.style.width = '100%';
   divPhoto.appendChild(photo);
   var photosStorage = firebase.storage().ref('main/');
   photosStorage.child(i + key).getDownloadURL().then(function(url) {
      photo.src = url;
   }).catch(function(error) {
     // Handle any errors
     console.log('An error occurred.')
   });
  }
 })

2 个答案:

答案 0 :(得分:0)

当getDownloadURL()从Firebase获得其文件路径时,“ photo.src = url;”。是第二个元素对象。

答案 1 :(得分:0)

它的工作方式是创建一个数组,将URL添加到该数组中,然后擦除以前的元素,并在array.forEach()内部创建新的元素。