簡體   English   中英

Sequelize.update() 拒絕在異步函數中工作並且不更新/不等待

[英]Sequelize.update() refuses to work in async function and doesn't update / doesn't await

考慮代碼:

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()的方法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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM