Вернуть идентификатор данных при загрузке изображения в angular ts и firebase

Я загружаю образ с помощью angularTS и firebase. Мой план - загрузить изображение и сохранить следующие данные. после этого я ожидаю возврата ID от обратного вызова firebase database. проблема в том, что я не могу получить данные, потому что они возвращаются мне вот так.

__zone_symbol__state : true
__zone_symbol__value : "viHnY2OpUnJkO2VbfgwJ"
__proto__ : Object

это мой код для загрузки изображения.

 this.venueSvc.setVenuePhoto(this.venue, this.photo[0])
      .subscribe(snapshot => {
       console.info(snapshot); 
       console.info(snapshot.__zone_symbol__value);
       console.info(snapshot.value);

 });

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

setVenuePhoto(venue: any, photo: File): Observable<any> {
    console.info(venue);

    let subjectTemp: any;
    let uploadPhoto: any;

    const uploadTask = firebase.storage()
      .ref().child(this.PATH_VENUES + '/' + photo.name)
      .put(photo);

    uploadTask.on('state_changed', snapshot => {
      uploadPhoto = snapshot;
      let progress = Math.floor((uploadPhoto.bytesTransferred / uploadPhoto.totalBytes) * 100);
    }, error => {
      console.info(error);
    }, () => {

      venue.dateCreated = firebase.firestore.FieldValue.serverTimestamp();
      venue.dateUpdated = firebase.firestore.FieldValue.serverTimestamp();
      venue.venuePhoto = uploadPhoto.task.snapshot.downloadURL;

      subjectTemp = this.venuesCollection.add(<Venue>venue.getData()).then(value => {
        return value.id
      });

      this.viewUploadSubject.next(subjectTemp);
    });

    return this.viewUploadSubject;
  }

Я должен получить удостоверение личности, потому что он мне понадобится, чтобы обновить место проведения. Любое предложение будет оценено.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
62
2

Ответы 2

Вы загружаете свое изображение в хранилище, а не в Firebase. Это две разные службы, и Хранилище не предоставляет и ID файла, который вы обновляете.

Если вы хотите сослаться на файл из хранилища, вы можете просто сохранить его путь.

Или вы можете сохранить ссылку на этот файл в Firebase, чтобы вам было проще получать ссылки из файлов.

ОК. ты читал мои коды? это после того, как я загружу изображение в хранилище. тогда я сохраню путь к файлу в моей базе данных firebase.

Joshua Fabillar 30.05.2018 10:42

Вы можете сохранить downloadUrl в базе данных вместо идентификатора

uploadPhoto.task.snapshot.downloadURL

Я не знаю структуру остальной части вашего приложения, но вы можете сохранить downloadURL или обновить базу данных в своем полном методе при загрузке uploadTask.on('state_changed', progress, error, complete); или сохраните его в состоянии downloadUrl и после загрузки сохраните URL-адрес в базе данных

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

Joshua Fabillar 02.06.2018 13:00

Другие вопросы по теме