Firebase Storage получает загрузочный URL и хранит внутреннюю часть массива в Firestore - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь загрузить массив файлов (изображений) в Firebase Storage, а затем сохранить их URL-адреса загрузки внутри одного массива в Firestore.

uploadImages(name, images) {
    for (let i = 0; i < images.length; i++) {
      const file = images[i].file;
      const path = `${name}/${new Date().getTime()}_${file.name}`;
      this.task = this.storage.upload(path, file);
      let snapshot = this.task.task.snapshot;

      this.task.snapshotChanges().pipe(
        finalize(() => {
          snapshot.ref.getDownloadURL().then(downloadUrl => {
            this.db.collection('test').doc()....

            HOW DO I SAVE ALL DOWNLOAD URLS INSIDE OF AN ASCENDING ARRAY?          

              .then(() => {
                console.log('Successfully uploaded image.');
              })
              .catch(error => {
                throw new Error('Error uploading image:' + error);
              });
          });
        })
      ).subscribe(snap => snapshot = snap);
    }
  }

Мой код предоставляет URL-адрес загрузки для каждого изображения, но как мне сохранить их внутри одного восходящего массива?

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете сохранить массив в своей базе данных Firestore, просто выполнив что-то вроде

this.db.collection([YOUR_COLLECTION]).add({link: [YOUR_ARRAY]});

, где [YOUR_ARRAY] содержит ваши URL-адреса для загрузки. Таким образом, вы создадите один документ Firestore, содержащий поле с именем link, которое является массивом ваших URL. Этот документ будет иметь автоматически сгенерированный идентификатор;если вы хотите присвоить себе идентификатор в своем документе, вам нужно сделать что-то вроде этого:

this.db.collection([YOUR_COLLECTION]).doc([YOUR_DOCUMENT]).set({link: arr});

С точки зрения наличия этого массива в порядке возрастания, вам сначала нужно организовать его так, как вы хотитепрежде чем добавить его.

...