Como obtenho o URL de download depois que o upload é feito no armazenamento do firebase
Desejo obter o URL de download assim que o upload da imagem for concluído e o downloadURL estiver definido como my newAds.picLink (object.property), mas neste código, pois o upload está em andamento
newAds.update({ picLink: downloadURL });
é chamado, o que gera um erro, pois o downloadURL não está disponível no momento e está em andamento. Resolvi isso usando setTimeOut para 8 segundos, o que permite que a imagem seja carregada completamente primeiro e depois o downloadURL seja recebido, mas isso não está correto.
Como posso criar um retorno de chamada correto que defina newAds.picLink = downloadURL após o upload completo da imagem?
addSubmitted.addEventListener('click', e => {
const newAds = _db.ref(userID).push();
const newAd = {
};
const ref = firebase.storage().ref();
const file = $('#exampleInputFile').get(0).files[0];
const name = (+new Date() + '-' + file.name);
const task = ref.child(name).put(file, {contentType: file.type});
function abc() {
task.snapshot.ref.getDownloadURL().then((downloadURL) => {
console.log('File available at', downloadURL);
console.log(downloadURL);
newAds.update({ picLink: downloadURL });
});
task.catch(error => {
// Use to signal error if something goes wrong.
console.log(`Failed to upload file and get link - ${error}`);
});
}
setTimeout(abc,8000);