Estoy tratando de empujar el objeto dentro de la matriz dentro de cada iteración.
const dashboard_get = async (req, res) => { let records = await Record.find(); let visitors = await Visitor.find(); let log = {}; let logs = []; records.forEach((record) => { visitors.forEach(async (visitor) => { if(record.visitor_id === visitor._id.toString()) { let establishment = await Establishment.findById({_id:record.establishment_id}); log.id = record.visitor_id; log.name = `${visitor.name.fname} ${visitor.name.mi} ${visitor.name.lname}`; log.establishment = `${establishment.name}`; log.address = `${establishment.address}`; log.date = record.createdAt; logs.push(log); //displaying here console.log(logs); log = {}; } }) }) // Not displaying here console.log(logs); res.render('./Administrator Module/dashboard', {logs}); }Dentro del forEach anidado, los registros se muestran correctamente. Sin embargo, no puedo acceder a los registros después de forEach. ¿Empujar el objeto dentro de la matriz dentro de forEach no retendrá los datos?
El problema es que forEach() ignora la promesa devuelta por la función de iteración. verifique que Usar async/await con un bucle forEach
En su código, el problema es la declaración del objeto de registro fuera del ciclo for. Se trata de llamar por referencia y llamar por problema de valor. si mueve el objeto de registro dentro si la condición está en un bucle anidado, funcionará bien. Hazlo asi
const dashboard_get = async (req, res) => { let records = await Record.find(); let visitors = await Visitor.find(); let logs = []; records.forEach((record) => { visitors.forEach(async (visitor) => { if (record.visitor_id === visitor._id) { let establishment = await Establishment.findById({ _id: record.establishment_id }); const log = { id: record.visitor_id, name: `${visitor.name.fname} ${visitor.name.mi} ${visitor.name.lname}`, establishment: establishment.name, address: establishment.address, date: record.createdAt }; logs.push(log); //displaying here console.log(logs); } }) }); // Not displaying here console.log(logs); res.render('./Administrator Module/dashboard', { logs }); }