Записать наблюдаемое значение в БД Firestore - PullRequest
0 голосов
/ 27 июня 2019

Я строю проект, используя Firestore, и я застрял с одной частью. Я создал сервис для загрузки файла, который отлично работает, и я использую pipe с last() и concatMap, чтобы вернуть getDownloadURL() из Firestore.

У меня проблема в том, что это наблюдаемое, я не могу получить это значение и присвоить объекту, который я создаю, для отправки в БД. Кто-нибудь может мне помочь с этим.

Вот файлы:

export class AddComponent { 
    uploadPercentage: Observable<number>;
    logoURL: Observable<string>;

onLogoChanged(event) {
        this.venueID = this.venueService.createID();
        const logo: File = event.target.files[0];
        const path = 'venues/logo/' + this.venueID + '/' + logo.name;
        const task = this.uploadService.uploadFile(logo, path);
        this.uploadPercentage = task.percentageChanges();
        this.logoURL = task.snapshotChanges().pipe(
            last(),
            concatMap(() => task.task.snapshot.ref.storage.ref(path).getDownloadURL())
        );
    }

    onFormSubmit() {
        const venueObject = { creationDate: Date.now(), isVerified: false, logo: this.logoURL, ...this.venueForm.value };
        console.log(venueObject);
        this.venueService.createNewVenue(venueObject)
            .then(
                () => {
                    this.dismiss();
                    this.venueForm.reset();
                },
                (e) => console.error(e)
            );
    }

}

upload.service.ts

export class UploadService {
    uploadPercent: Observable<number>;
    constructor(private uploadDB: AngularFireStorage) {}

    uploadFile(file: File, path: string) {
        return this.uploadDB.upload(path, file);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...