Я разделяю свою функцию fileSelected () и функцию Update (), в результате чего пользователю нужно будет нажать кнопку обновления, прежде чем выбранный файл должен быть помещен в хранилище Firebase.
, пока я могуполучить мой файл хранится в хранилище, я не могу получить путь к файлу и ссылаться на него в моей базе данных Firestore.
вот код в .ts
onFileSelected(event) {
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
this.file = event.target.files[0];
target:EventTarget;
reader.readAsDataURL(event.target.files[0]); // read file as data url
reader.onload = (event: Event) => {
this.profileURL = reader.result; // This is valid
}
}
}
updateUser(user: User, privateUser: PrivateUser, dob) {
//store img in storage
var path = `users/${this.userID}/${this.file.name}`
var ref = this.storage.ref(path);
var task = this.storage.upload(path, this.file);
task.snapshotChanges().pipe(
finalize(() => {
this.downloadURL = ref.getDownloadURL();
this.downloadURL.subscribe(url => console.log(url) );
console.log("test");
this.afs.doc(`users/${this.userID}`).update({
profile_pic : this.downloadURL });
}),
);
console.log(this.downloadURL);
this.userService.updateUser(user, privateUser, dob);
}
проблема в том, чтофункция из task.snapshotChanges() ...
не вызывается, поскольку моя консоль не смогла отобразить «тест».
console.log(this.downloadURL);
, затем вернитесь с неопределенным значением.