嗨,我正在尝试使用 sequelize 从 Node 批量更新 MSSQL 数据库。我仍然不太了解有关 Promises、.then() 等的所有内容。
我需要的是一个由 POST 调用的函数,它接收 JSON 对象数组:
[{F1:'123',F2:'a',F3:'b',F4:'Z'},
{F1:'124',F2:'a',F3:'b',F4:'Z'},
{F1:'125',F2:'a',F3:'b',F4:'Z'},
{F1:'126',F2:'a',F3:'b',F4:'Z'},]
其中 F1 是对象的 ID,F4 是要更新的字段。对所有收到的行进行更新并发送响应。对于单个对象,我无缝地执行以下操作:
MODEL.update(
{
att4: art['F4'],
},
{
where:{
att1: {$eq: art['F1']}
}
}).then(function(result)
{
res.status(200).send();
}).catch(function(err)
{
res.status(500).send(err);
})
一切都很完美。但是,它需要大规模执行所有更新,然后在客户端收到响应,包括受影响的行数或相应的错误。
我尝试将 MODEL.update([...]) 放在接收 JSON 对象的函数中,并使用 Foreach 迭代数组并为每个对象调用此函数,但我没有实现我需要的。
我希望你能帮助我。谢谢 :)
好的,我已经研究并遇到了
Promise.all
。我能够进行大规模更新,顺便说一下,我将其放入事务中以保持查询的原子性。留下这样的东西:
我希望它可以帮助别人。
注意:知道如何处理 Promise 非常重要