Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

303
Visualizações
Subir varias fotos a la vez en el almacenamiento de firebase y almacenar sus URL en un documento de firestore (firebase versión 9)

Estoy creando un formulario donde el usuario necesita ingresar información para crear un documento de ciudad. El usuario también necesita cargar varias fotos de la ciudad. Al enviar el formulario, se crea un nuevo documento de la ciudad en firestore, luego cada foto se carga en el almacenamiento de firebase asociado y, finalmente, se agrega un nuevo campo llamado photosURLs con todas las URL de las fotos al documento de la ciudad.

Aquí está mi código:

 async function addDocument() { const docRef = await addDoc(collection(db, "cities"), { name: "Tokyo", country: "Japan" }); return docRef } async function UploadMultiplePhotos(docRef) { var photos = [] for (var i = 0; i < files.value.length; i++) { // files.values contains all the files objects const file = files.value[i]; refStorageFunction( storage, "cities/" + docRef.id + "/" + file.name ); uploadBytes(storageRef, file).then((snapshot) => { getDownloadURL(snapshot.ref).then((downloadURL) => { photos.push(downloadURL) }); }); } return Promise.resolve(photos) } async function updateDocument(docRef, photos) { await updateDoc(docRef, { photosURLs: photos }); } function createCity() { addDocument().then((docRef) => { UploadMultiplePhotos(docRef).then((photos) => { updateDocument(docRef, photos).then(() => { router.push($CITY_PATH) }) }) }) }

Mi problema es que el campo photosURLs resultante en el documento de la ciudad está vacío. Parece que mi función UploadMultiplePhotos no espera a que la matriz de photos se complete por completo.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si establece puntos de interrupción y ejecuta el código en un depurador, o agrega algunas declaraciones de registro bien ubicadas, verá que su return Promise.resolve(photos) se ejecuta antes de que se llame a photos.push(downloadURL) : así que siempre se resuelve con una matriz vacía.

Una solución simple es usar await en lugar de then() :

 async function UploadMultiplePhotos(docRef) { var photos = [] for (var i = 0; i < files.value.length; i++) { // files.values contains all the files objects const file = files.value[i]; refStorageFunction( storage, "cities/" + docRef.id + "/" + file.name ); const snapshot = await uploadBytes(storageRef, file) const downloadURL = await getDownloadURL(snapshot.ref) photos.push(downloadURL) } return photos }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda