Javascript 使用不同的条件更新sequelize中的多行
我正在尝试对postgres数据库中的行执行带有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如何实现这一点?您可以一次更新多条记录,但所有记录的更新相同 ,如果要针
- 身份证
- 名字
- 姓
- 性别
- 位置
- 创建数据
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});
}