Я пытаюсь написать функцию, которая загружает несколько изображений в Firebase, сохраняет URL-адреса, которые возвращаются объекту, а затем загружает этот объект в мой Cloud Firestore. У меня нет четкого понимания async / await или обещаний, поэтому, если кто-нибудь сможет помочь, это будет высоко оценено.
По сути, я хочу, чтобы uploadImages()
до конца sh запустился, а затем запустил uploadData()
, где saveIssue()
запускается при отправке формы.
Вот что я работаю с:
saveIssue() {
this.uploadImages();
this.uploadData();
},
uploadData() {
let self = this;
db.collection("issues")
.add(self.issue)
.then(docRef => {
self.$router.push({
name: "ReportPage",
params: { issueId: docRef.id }
});
})
.catch(error => {
console.error(error);
});
},
uploadImages() {
const storageRef = storage.ref();
let self = this;
this.imagePreviews.forEach(image => {
let imageName = uuidv1();
let fileExt = image.fileName.split(".").pop();
let uploadTask = storageRef
.child(`images/${imageName}.${fileExt}`)
.putString(image.base64String, "data_url");
uploadTask.on("state_changed", {
error: error => {
console.error(error);
},
complete: () => {
uploadTask.snapshot.ref.getDownloadURL().then(downloadURL => {
self.issue.images.push(downloadURL);
});
}
});
});
},