Sequelize:按列更新它的旧值

hus*_*sam 6 javascript sql node.js sql-update sequelize.js

我试图通过此查询使用Sequelize更新一组数据

Users.update({
    flag: 'flag & ~ 2'
} , {
    where : {
        id :{
            gt : 2
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

生成的查询是

UPDATE `users` SET `flag`='flag & ~ 2' WHERE id > 2
Run Code Online (Sandbox Code Playgroud)

但应该是

UPDATE `users` SET `flag`=flag & ~ 2 WHERE id > 2
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何通过它的旧值来更新数据

问候

Mat*_*ich 9

您应该可以通过以下方式执行此操作:

Users.update({
    flag: sequelize.literal('flag & ~ 2')
} , {
    where : {
        id :{
            gt : 2
        }
    }
});
Run Code Online (Sandbox Code Playgroud)


hex*_*are 0

最简单的解决方案是使用原始查询

sequelize.query("UPDATE users SET flag=flag & ~ 2 WHERE id > 2").spread(function(results, metadata) {
  // Results will be an empty array and metadata will contain the number of affected rows.
})
Run Code Online (Sandbox Code Playgroud)