gpt4 book ai didi

sequelize.js - Sequelize 返回更新前存在的数据

转载 作者:行者123 更新时间:2023-12-03 22:38:54 27 4
gpt4 key购买 nike

我正在从循环中更新特定模型。它基本上将一个数字分配到多个记录中,直到该数字用完为止。但有时,数量可能太多,因此在循环结束时会留下一个数量。现在,当发生这种情况时,我想将剩余的金额放入循环中更新的表之一。

我正在获取要更新的确切记录,但其数量反射(reflect)了循环中更新之前的数量,但在数据库中它已正确更新。

我的 console.log() 显示运行时确实发生了正确的顺序。每个订单首先在循环中执行,然后退出。

下面只是一个示例

  amount = 900
ModelName=[{'current_balance':100,'id':1},{'current_balance':90,id:2}]; // Schema structure
for(let i=0; i<2; i++){
//update records
console.log('updating row ' , i);
const currentBalance= updateRecords[i]['current_balance']
const newBalance= 30+ currentBalance
db.ModelName.update({balance:newBalance})

amount= amount - 30;

}

// do we have amount left?
if (amount >0){
console.log('remain amount')
// with Sequelizer SELECT, I am getting the latest record sucesssfully. After adding 30 to it in the looop, here its balance should have been 120. But I still get 90
}

控制台输出是
  updating row 0
updating row 1
remain amount

并且数据库在循环完成后包含正确的信息,但是当我在循环结束时检查时,我仍然看到循环前的原始值。

最佳答案

问题:

for(let i=0; i<2; i++){
//update records
console.log('updating row ' , i);
const currentBalance= updateRecords[i]['current_balance']
const newBalance= 30+ currentBalance
db.ModelName.update({balance:newBalance}) // <---- ISSUE IS HERE
amount= amount - 30;
}

您正在循环但不等待更新完成,您应该等待更新完成然后转到下一次更新

解决方案:

如果您使用的是 async/await ,那么使用它:
async function FUNCTION_NAME() { // <----- async should be here
...
await db.ModelName.update({balance:newBalance}); // <----- await should be here
....
}

Promise.all
let promises = []; // <---- HERE
for(let i=0; i<2; i++){
//update records
console.log('updating row ' , i);
const currentBalance= updateRecords[i]['current_balance']
const newBalance= 30+ currentBalance
promises.push(db.ModelName.update({balance:newBalance})) // <---- HERE
amount= amount - 30;
}

if (amount >0){
Promise.all(promises).then(data => {
console.log('remain amount'); // <---- CHECK HERE
});
}

关于sequelize.js - Sequelize 返回更新前存在的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53624791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com