这是我的密码。。。
var schedule =new Schedule(
{
flightNumber: req.body.flightNumber,
status: req.body.status,
pickDateTime: req.body.pickDateTime,
});
if(req.body.passenger.length > 0){
await req.body.passenger.forEach(async function (data) {
var driver
await Driver.findOneAndUpdate({area:data.location_code,$expr: { $gt:["$vehicle_capacity", "$capacity_occupied"]}},{ $inc: { capacity_occupied: +1 } }).then((drivers) => {
driver = drivers._id
});
await schedule.passenger.push({
driver: driver,
dropLocation: req.body.dropLocation,
droplong: req.body.droplong,
picklong: data.long
})
});
}
console.log(schedule.passenger);
当我尝试在异步函数内部访问schedule.passenger时,它正在工作,但当尝试在异步函数外部访问时,它不工作。
1条答案
按热度按时间yvfmudvl1#
forEach(async function
将触发一组异步函数,一旦数组迭代完成,执行将移动到下一个代码块,而无需等待所有异步函数完成。这可以通过使用
map
功能和回报的承诺,并等待所有这些。也
await schedule.passenger.push({
是不正确的,因为Array.prototype.push()
不是异步操作。