Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

227
Vistas
¿Cómo almacenar datos de respuesta en una matriz fuera de la función actual en el nodo js?

¿Cómo almaceno todos los datos de resultados en la matriz pImages? Obtengo el resultado, pero en ese caso creo que la función asíncrona funcionará, pero no sé cómo aplicarla. por favor ayuda mi codigo es

 exports.addImage = (req, res, next) => { let imageArray = req.files.productImageArray; if (!req.files || Object.keys(req.files).length === 0) { return res.status(400).send("No files were uploaded."); } // here all images will be stored in array format let pImages = []; for (let f in imageArray) { imagekit.upload( { file: imageArray[f].data, //required fileName: imageArray[f].name, //required customMetadata: { color: req.body.productLabels[f], default: req.body.defaultProduct[f] } }, function(error, result) { if (error) console.log(error); else { console.log(result) pImages.push(result) } } ); } console.log("p", pImages); //output p [] };

Gracias de antemano

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede envolver imagekit.upload(...) en una promesa y luego esperar esta promesa.

Por lo tanto, su promesa debe resolverse o rechazarse en la devolución de llamada en imagekit.upload.

Tenga en cuenta que su método addImage ahora tiene que ser asíncrono para usar la palabra clave await y, por lo tanto, devuelve una promesa.

 exports.addImage = async (req, res, next) => { let imageArray = req.files.productImageArray; if (!req.files || Object.keys(req.files).length === 0) { return res.status(400).send("No files were uploaded."); } // here all images will be stored in array format let pImages = []; for (let f in imageArray) { try{ const pImage = await new Promise((resolve,reject)=>{ imagekit.upload( { file: imageArray[f].data, //required fileName: imageArray[f].name, //required customMetadata: { color: req.body.productLabels[f], default: req.body.defaultProduct[f] } }, function(error, result) { if (error){ reject(error); } else { resolve(result) } } ); }); pImages.push(pImage); } catch(e){ console.error(e); } } console.log("p", pImages); //output p [] };

Hay otras cosas en su código que no he abordado.

En la primera línea, está accediendo a req.files.productImageArray sin comprobar si está definido req.files. Esta comprobación se realiza a continuación. Por lo tanto, debe mover su primera línea después de esta verificación.

¿Es req.files.productImageArray una matriz como dice el nombre? Si es así, no debe usar un bucle for in, use un bucle for of en su lugar y en sus comprobaciones de cordura debe incluir Array.isArray (req.files.productImageArray).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda