Я пытаюсь сделать функцию загрузки в реакции- js, используя хранилище firebase и firestore. У меня есть функция, которая загружает файл в хранилище FireBase, а затем отправляет некоторые данные в FireStore. Я хочу, чтобы URL-адрес файла go с данными, которые идут в firestore. До сих пор я могу только записать URL на консоль, но не могу его сохранить. Я просмотрел всю информацию в Интернете и в документации по Firebase, но не могу найти способ сохранить URL при загрузке.
Если у вас есть предложения по поводу того, что я могу попробовать, я был бы признателен:)
publishHandler = (event) => {
event.preventDefault();
console.log(this.state.input);
let url = "";
let file = this.state.input.image;
let storageRef = firebase.storage().ref();
let uploadTask = storageRef.child("uploads/" +file.name).put(file);
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
function (snapshot) {
let progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log("upload is " + progress + " % done.");
},
function(error) {
console.log("Something went wrong..." + error);
},
function(complete) {
uploadTask.snapshot.ref.getDownloadURL().then(function (downloadURL) {
console.log(downloadURL);
// Here is where I wish I could store the downloadURL into the url variable declared earlier
url = downloadURL;
});
}
);
// Post data to firebase.
db.collection("hittat").doc().set({
title: this.state.input.title,
amount: this.state.input.amount,
description: this.state.input.description,
url: url;
});
};