javascript - 对象数组在 .push() 之后不显示内容

标签 javascript node.js express mongoose

我试图在 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/

相关文章:

javascript - 将 div 置于固定位置的前面

JavaScript 计时器重置后不启动

node.js - 如何在单个查询中执行两个 $pull

javascript - 如何在 multer 中上传带有可选数据的图像?

javascript - 在客户端 javascript 文件中使用 JSON 数据

javascript - Jade/Mongo 输出中的换行符

javascript - 如何在加载时将 map 缩放到标记?

node.js - express.js 连接模块出现问题

node.js - 如果文件已打开/正在写入,如何检查 Node.js?

node.js - 用 nock 模拟一个开放的网络套接字