Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
Obtener la URL de descarga de una imagen cargada de forma síncrona en Firebase Storage

Estoy usando Firestore y Storage en un proyecto de React Native y estoy trabajando en una función que migra datos de SQLite a Firebase. Una vez que el usuario inicia sesión por primera vez, el proceso de migración se ejecuta sincrónicamente. Entre los datos para migrar hay imágenes base64 y no importa lo que haga, a pesar de usar async/await en todas partes, obtengo la DownloadURL "demasiado tarde", después de que se realiza el proceso de migración y se enumeran los nuevos datos de Firestore. Entonces, no puedo mostrar las imágenes al principio, tengo que recargar la aplicación.

Mi código:

 const upload64BaseImage = async (photo, docRef) => { try { //fetch doesn't work with base64 images and Firebase Cloud Storage const blob = await new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.onload = function () { resolve(xhr.response); }; xhr.onerror = function (e) { console.log(e); reject(new TypeError("Network request failed")); }; xhr.responseType = "blob"; xhr.open("GET", photo, true); xhr.send(null); }); const imageRef = ref(storage, `images/${docRef}.jpg`); const metadata = { contentType: "image/jpeg", }; const snapshot = await uploadBytes(imageRef, blob, metadata); const downloadUrl = await getDownloadURL(snapshot.ref); return downloadUrl; } catch (error) { console.log(`error`, error.message); } }; const createNewDocument = async (userId, data) => { try { const newUserRef = doc(collection(db, "users")); const myTimestamp = Timestamp.fromDate(new Date(data.Birthdate)); const downloadUrl = await upload64BaseImage(data.Photo, newUserRef.id); //crear un objeto const newUserObjetc = { UserId: userId, Birthdate: myTimestamp, Name: data.Name, Surname: data.Surname, Photo: downloadUrl || null, }; await setDoc(newUserRef, newUserObjetc); return newUserRef.id; } catch (error) { console.log(`error`, error.message); } };
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!