我试图在 forEach 迭代中将对象推送到数组内。
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});
}
在嵌套的 forEach 中,日志显示正确。但是,我无法访问 forEach 之后的日志。在 forEach 内将对象推送到数组内是否不会保留数据?
最佳答案
问题是,迭代函数返回的 Promise 被 forEach() 忽略。 检查一下 Using async/await with a forEach loop
关于javascript - 对象数组在 .push() 之后不显示内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71567621/