【发布时间】:2021-09-09 17:56:53
【问题描述】:
我正在尝试编写一段代码:
router.get("/", async (req, res) => {
let listElevators = [];
await Building.findById(req.body.id).then((building) => {
building.Equipement.forEach(async (e) => {
await Elevator.findById(e).then((rzlt) => {
let bool = false;
rzlt.Equipement_elevator.forEach((equip) => {
if (equip.Year == req.body.year) {
bool = true;
}
});
if (bool) {
listElevators.push(e);
}
});
});
});
res.status(200).json(listElevators);
});
问题是“listElevators”在我返回时总是为空,但如果我在“if (bool)”之后立即进行控制台日志,则该变量不为空。
大家知道问题出在哪里吗?
谢谢
【问题讨论】:
-
尝试 for 循环而不是 forEach 循环。
-
您的代码不会在这一行等待异步执行:
building.Equipement.forEach(async (e) => {。
标签: node.js mongodb express mongoose