Подключение операторов для возврата URL загрузки после загрузки файла в Angularfire - PullRequest
0 голосов
/ 31 января 2020

Привет!

Я создаю функцию, в которой я хочу вернуть URL загрузки, предоставленный angular хранилищем после загрузки файла, я должен сделать некоторые проверки перед фактической загрузкой файл, так как эти проверки будут включать подписку на множество наблюдаемых, я скорее подключаю операторы, чтобы избежать утечек памяти.

Сейчас мой (частичный) код выглядит так:

      return this.getTemporaryDoc(docRoute).pipe(switchMap(
    (data => {
      if (data === undefined || data === null || !data) {
        this.task = this.storage.upload(fileRoute, file);
        const fileRef = this.storage.ref(fileRoute);
        return this.task.snapshotChanges().pipe(
          filter(snap => snap.bytesTransferred === snap.totalBytes),
          switchMap(() => {
            return timer(500).pipe(switchMap(() => {
              return fileRef.getDownloadURL().pipe(map((url => {
                this.navigation.loader.next(false);
                return this.createResponse(0, url);
              })));
            }));
          }));

Мой код работает, но я не думаю, что это чистое решение, так как я использую таймер. Причина таймера в том, что если его не использовать, fileRef.getDownloadURL () вернет ошибку 404.

storage/object-not-found

storage/object-not-found

Это особенно происходит с очень большими файлами, есть ли другое решение для этого? Тот, где мне не нужно использовать таймер и быть уверенным, что файл создан правильно? Заранее спасибо!

PD Остерегайтесь того, что представленный код - это лишь малая его часть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...