Obtengo una matriz de objetos que contienen imágenes base 64. Tengo que convertir imágenes base64 en url y tengo que guardar en db. Pero el problema es que tengo un bucle que contiene una sola imagen y convierte la cadena en URL. Pero tengo un problema de espera. Debido a que el archivo todavía está escribiendo una cadena en la URL, pero el bucle se mueve a otro archivo, por lo que no puedo guardar correctamente todos los archivos. Aquí está mi código
let attachments =[] for (let i = 0; i < files.length; i++) { //Get Base64 if ( files[i].base64 && files[i].base64 != null && files[i].base64 != "" ) { let base64 = files[i].base64.split(";base64,").pop(); let path = `uploads/${Date.now()}-${files[i].name}`; fs.writeFile( `${path}`, base64, { encoding: "base64", }, async function (err) { if (err) { console.log(err); return res.status(400).send(err.message); } else { attachments.push({ attachmentTitle: files[i].attachmentTitle, eAttachmentT: files[i].attachmentTitle, eAttachmentPath: path, eAttachmentURL: path, description: files[i].description, }); await Model.findOneAndUpdate( { "level1.email": req.body.email, }, { $set: { "level2.attachments": attachments, }, } ).then(async (respo) => { // console.log("up"); // console.log(attachments); if (files.length === i + 1) { if (Model.level1.supplierStatus == "REJECTED") { await axios({ method: "post", url: `${process.env.SELF}/rgt`, data: { vendorId: respo._id, }, }) .then((resp) => { return res.status(200).send(resp.data); }) .catch((err) => { return res.status(400).send(err); }); } else { let result = await Model.findOne({ "level1.email": req.body.email, }); return res .status(200) .send(result.level2.attachments); } } }); } } ); }