Estoy usando ionic 5 y angular 9 para cargar una URL de datos en el almacenamiento de firebase. Mi código funciona bien, pero no estoy seguro de cómo esperar hasta que la URL de descarga esté disponible.
a continuación se muestra el código
uploadToFireStore(imageData){ const storage = getStorage(); const storageRef = ref(storage, (new Date().getTime().toString())); uploadString(storageRef, imageData, 'data_url').then((snapshot) => { getDownloadURL(snapshot.ref).then((downloadURL) => { console.log('File available at', downloadURL); this.downloadURL = downloadURL }); }); }Lo estoy llamando en el complemento de mi cámara así
this.uploadToFireStore(base64Image) console.log("updated with url:", this.downloadURL)Actualmente, la URL de descarga se imprime más tarde y mi código no está esperando que la URL de descarga esté allí. Necesito esta URL para cargarla en mi RTDB, así que por favor indique cómo puedo hacerlo sin mover el código a esta parte.
getDownloadURL(snapshot.ref).then((downloadURL) => { ...Probablemente solo necesite devolver su cadena de promesa:
uploadToFireStore(imageData){ const storage = getStorage(); const storageRef = ref(storage, (new Date().getTime().toString())); return uploadString(storageRef, imageData, 'data_url').then((snapshot) => { return getDownloadURL(snapshot.ref).then((downloadURL) => { console.log('File available at', downloadURL); this.downloadURL = downloadURL }); }); }Entonces puedes hacer esto:
this.uploadToFireStore(base64Image).then(() => { console.log("updated with url:", this.downloadURL) });