从Firebase Storage带有下载URL的阵列无法识别每个条目

时间:2019-11-18 05:16:22

标签: angular typescript firebase-storage

我目前正在尝试将多个图像上传到Firebase Storage并将每个下载URL存储在Firestore中。

仅供参考:images是文件数组

到目前为止,我已经完成了以下代码:

uploadImages(name, collection, images, slide) {
    const urls: { url: string, id: number }[] = [];
    for (let i = 0; i < images.length; i++) {
      const file = images[i].file;
      const path = `${name}/${new Date().getTime()}_${file.name}`;
      const ref = this.storage.ref(path);
      this.task = this.storage.upload(path, file);
      let snapshot = this.task.task.snapshot;
      this.task.snapshotChanges().pipe(
        finalize(async () => {
          const downloadUrl = await ref.getDownloadURL().toPromise();
          urls.push(downloadUrl);
          if (i === images.length - 1) {
            // urls.sort((a, b) => a.id - b.id);
            // const result = urls.map(a => a.url);
            console.log(urls);
            this.productRef.doc(name).collection('collection-colors').doc(this.ccID.toString()).update({
              [slide]: urls
            });
          }
        })
      ).subscribe(snap => snapshot = snap);
    }
}

这是一种作品,但有些图片无法上传-总是像一两个图片一样。寻找解决方案时,我尝试登录url并返回以下内容: enter image description here 这以某种方式包含了这个问题的答案,为什么只有一些下载URL被上传-它只能识别2个条目,但实际上只有3个!?这就是我没有得到的。是什么引起了这个问题?

在这种情况下,上传的数组只有2个而不是3个条目。

仅供参考,蓝色信息图标显示:“下面的值刚刚被评估”

0 个答案:

没有答案