Моя функция должна назначать сотрудника на место, если место доступно. Я не понимаю, почему программа не работает синхронно, хотя я использовал «ожидание».
В первых строках функции программа работает как положено. он ожидает получения «мест» из базы данных, затем выполняет «если (мест. длина> 0)»
проверить и инициализировать пустой массив.
async function AssignSeat(req, res) {
var seats = await connection.SeatEmployees.findAll({
where: {
SeatId: req.body.seat.SeatId
}
})
.catch(err => {
res.status(err.status).json(err)
});
if(seats.length > 0){
var isShared = true;
var employees = [];
await seats.forEach(async function(seat){
var employee = await connection.EmployeesGraph.findAll({
where: {
id: seat.EmployeeGraphId
}
})
.catch(err => {
res.status(err.status).json(err)
});
employees.push(employee);
})
.catch(err => {
res.status(err.status).json(err)
});
employees.forEach(employee => {
if(employee.frequent == true)
isShared = false;
})
if(isShared == true){
//assign user to seat;
}
}
}
Моя проблема в 13-й строке кода, в "await seat.forEach (асинхронная функция (seat))".
То, что я хочу сделать, - это просмотреть каждый элемент «мест», получить сотрудника, назначенного на это место, и вставить его в массив «сотрудников».
Только после итерации со всех мест и заполнения массива сотрудников я хочу перейти к строке "employee.forEach (employee => {".
Вместо этого происходит то, что после вызова
----- "var employee = await connection.EmployeesGraph.findAll ({" ----, программа не ожидает продолжения, чтобы получить сотрудника из базы данных, а затем перейти к ---- "employee.push (сотрудник); "----, как и предполагалось.
После ---- "employee.push (employee);" ---- переходит к пункту в строке, затем я получаю сообщение об ошибке "Ошибка типа: невозможно прочитать свойство 'catch' of undefined".
Не могли бы вы объяснить, почему это происходит?