Sequelize:按列更新它的旧值

时间:2015-04-09 09:43:54

标签: javascript sql node.js sql-update sequelize.js

我正在尝试使用此查询的Sequelize更新一组数据

Users.update({
    flag: 'flag & ~ 2'
} , {
    where : {
        id :{
            gt : 2
        }
    }
})

生成的查询是

UPDATE `users` SET `flag`='flag & ~ 2' WHERE id > 2

但是应该是

UPDATE `users` SET `flag`=flag & ~ 2 WHERE id > 2

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

此致

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:0)

最简单的解决方案是使用raw queries

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.
})

答案 2 :(得分:0)

您可以使用连续字面量来做到这一点。

Subject<Resource>()

您也可以使用增量方法执行此操作,其中by表示要从哪个值增量。

ReplaySubject<Resource>(1)