Я загружаю образ с помощью 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;
}
Я должен получить удостоверение личности, потому что он мне понадобится, чтобы обновить место проведения. Любое предложение будет оценено.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы загружаете свое изображение в хранилище, а не в Firebase. Это две разные службы, и Хранилище не предоставляет и ID файла, который вы обновляете.
Если вы хотите сослаться на файл из хранилища, вы можете просто сохранить его путь.
Или вы можете сохранить ссылку на этот файл в Firebase, чтобы вам было проще получать ссылки из файлов.
Вы можете сохранить downloadUrl в базе данных вместо идентификатора
uploadPhoto.task.snapshot.downloadURL
Я не знаю структуру остальной части вашего приложения, но вы можете сохранить downloadURL или обновить базу данных в своем полном методе при загрузке
uploadTask.on('state_changed', progress, error, complete);
или сохраните его в состоянии downloadUrl и после загрузки сохраните URL-адрес в базе данных
Привет Питер. Я это уже сделал. если вы изучите мой код. вы можете видеть, что я сохраняю URL-адрес снимка в базе данных. теперь после сохранения данных URL-адреса снимка. Я ожидаю, что id вернется ко мне. потом после этого. Я собираюсь использовать обратный вызов для получения идентификатора из компонента, чтобы я мог использовать этот идентификатор для любого необходимого.
ОК. ты читал мои коды? это после того, как я загружу изображение в хранилище. тогда я сохраню путь к файлу в моей базе данных firebase.