Javascript 使用不同的条件更新sequelize中的多行

Javascript 使用不同的条件更新sequelize中的多行,javascript,postgresql,sequelize.js,Javascript,Postgresql,Sequelize.js,我正在尝试对postgres数据库中的行执行带有sequelize的更新命令。我需要能够用相同的值更新具有不同条件的多行 例如,假设我有一个包含以下字段的用户表: 身份证 名字 姓 性别 位置 创建数据 假设,我在这个表中有4条记录,我想用ID-1更新记录,用一个新位置(比如尼日利亚)更新4条记录 类似这样:SET field1='foo'其中id=1,SET field1='bar'其中id=2 使用sequelize如何实现这一点?您可以一次更新多条记录,但所有记录的更新相同 ,如果要针

我正在尝试对postgres数据库中的行执行带有sequelize的更新命令。我需要能够用相同的值更新具有不同条件的多行

例如,假设我有一个包含以下字段的用户表:

  • 身份证
  • 名字
  • 性别
  • 位置
  • 创建数据
假设,我在这个表中有4条记录,我想用ID-1更新记录,用一个新位置(比如尼日利亚)更新4条记录

类似这样:
SET field1='foo'其中id=1,SET field1='bar'其中id=2


使用sequelize如何实现这一点?

您可以一次更新多条记录,但所有记录的更新相同 ,如果要针对不同的情况进行不同的更新,则必须多次运行

示例:

这将把
fields1
更新为foo,其中
id
为1或4

let ids = [1,4];
Your_model.update({ field1 : 'foo' },{ where : { id : ids }}); 
如果
id
为1,则将
field1
更新为foo;如果
id
为4,则将
field1
更新为bar

Your_model.update({ field1 : 'foo' },{ where : { id : 1 }});
Your_model.update({ field1 : 'bar' },{ where : { id : 4 }}); 

希望这将消除您的所有疑问。

您可以根据您的条件更新多行,而要做到这一点,运算符非常有用

看这里:(接线员)

有各种各样的运算符,包括范围运算符,或类似运算符…等等

更新时的另一个重要问题是,如何更新所有行

不包括
where
会导致错误“传递给更新的选项参数中缺少where属性”

答案在下面的代码中:为
where
提供一个空对象

await DisplayMediaSequence.update({
    default: false
}, {
    where: {}, // <-- here
    transaction
});
await DisplayMediaSequence.update({ 
    default: true     <-- after all turned to false, we now set the new default. (that to show a practical expample) -->
}, {
    where: {
        id
    },
    transaction
});
等待DisplayMediaSequence.update({
默认值:false
}, {

其中:{},//我们计划在多行中为相同字段保存不同的值。有可能获得数据库中所有字段值相同的值。 用于循环

const {idArray,group_id} = params;

for(const item of idArray){

    const response = await Your_model.findOne({ where:{group_id,user_id:null}, order: [['id', 'DESC']] });

    await response.update({user_id:item});
}

是的,是的。谢谢。@proton,很高兴知道,谢谢,顺便说一句,很高兴编码。@VivekDoshi有什么方法可以通过一个更新查询来实现。我认为这应该是公认的答案,它直接解决了问题。谢谢
const {idArray,group_id} = params;

for(const item of idArray){

    const response = await Your_model.findOne({ where:{group_id,user_id:null}, order: [['id', 'DESC']] });

    await response.update({user_id:item});
}