angular - Descargar archivo desde Firebase Storage no funciona
En mi aplicación Angular estoy intentando recuperar un archivo guardado en el almacenamiento de Firebase.
Con este fin escribí el siguiente código:
var storage = firebase.storage();
var fileRef = storage.ref(`${this.idOfCurrentUser}/personalData.card`);
var blob = null;
console.log("THIS LINE DOES GET PRINTED");
fileRef.getDownloadURL().then(function(url) {
console.log("THIS LINE NEVER GETS PRINTED");
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function(event) {
blob = xhr.response;
};
xhr.open('GET', url);
xhr.send();
}).then(function() {
//some more code
}).catch(function(error) {
console.log(error);
});
Este código sigue la documentación de Firebase (https://firebase.google.com/docs/storage/web/download-files) ... pero no funciona.
Específicamente, el programa se queda atascado en la siguiente línea:
fileRef.getDownloadURL().then(function(url) {
No hay ningún mensaje de error en la consola. Pero la rueda gira para siempre y toda la aplicación se vuelve inutilizable.
¿Alguien sabe una forma que funcione de recuperar un archivo de Firebase Storage?
ACTUALIZACIÓN :
Siguiendo una sugerencia de Joseph Webber, cambié las primeras líneas del código a lo siguiente:
var storage = firebase.storage();
var id = this.idOfCurrentUser;
var fileRef = storage.ref(`${id}/personalData.card`);
Sin embargo, el problema sigue exactamente igual.
ACTUALIZACIÓN2:
Siguiendo otra sugerencia de Joseph Webber, también intenté lo siguiente:
var fileRef = storage.child(`${id}/personalData.card`);
Sin embargo, esto da el siguiente mensaje de error:
"Property 'child' does not exist on type 'Storage'"
ACTUALIZACIÓN3:
también probé esto:
var fileRef = storage.ref(this.idOfCurrentUser + "/personalData.card");
... tampoco hizo ninguna diferencia
P.D.: Las reglas de almacenamiento son las siguientes:
Respuesta #1
Elimina this. de tu literal de plantilla.
var fileRef = storage.ref(`${idOfCurrentUser}/personalData.card`);
Editar
Intenta cambiar storage.ref a storage.child.
var fileRef = storage.child(`${id}/personalData.card`);
Respuesta #2
Ok, lo resolví ahora. El problema estaba relacionado con un bucle infinito en otra función que se ejecutaba en paralelo.

