javascript - Sequelize.update() 拒绝在异步函数中工作并且不更新/不等待
问题描述
考虑代码:
const listOfEmployees = .... // get list of employees from god knows where ...
async function incrementHoursEmps(listOfEmployees) {
listOfEmployees.map(async employeeId => {
const condition = { where : {employeeId} };
const options = { multi: true };
const values = { hoursWork: sequelize.literal('"hoursWork" + 1') };
ModelEmployees.update(values, condition , options)
.then(result => {
// ....
})
.catch(error => {
console.log(error);
});
});
}
await incrementHoursEmps(listOfEmployees);
.update()
每当我尝试使用of 方法更新多行(甚至只是单行)时Sequelize
,代码永远不会等待,.update()
并且不会真正更新。
它甚至工作还是我做错了什么?
解决方案
Array.map
不知道异步。如果您想实现这种设置,您需要Array.map
将列表转换为承诺,然后使用Promise.all等待所有承诺并返回结果数组。
const listOfEmployees = .... // get list of employees from god knows where ...
async function incrementHoursEmps(listOfEmployees) {
return listOfEmployees.map(employeeId => {
const condition = { where: { employeeId } };
const options = { multi: true };
const values = { hoursWork: sequelize.literal('"hoursWork" + 1') };
return ModelEmployees.update(values, condition, options);
});
}
await Promise.all(incrementHoursEmps(listOfEmployees));