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

225
Views
¿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 answers
Answer question

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 Report
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!