node.js Sequelize实现单实例字段或批量自增、自减
一、单实例自增、自减
在Sequelize中,一个实例(Instance)表示数据库中的一行记录。Instance有两种由Model.build()
创建的非持久化实例,和由Model.create()
等方法创建的持久化实例。无论是持久化还是非持久化实例,都会有increment()
、decrement()
两人上方法,分别用于字段值的自增和自减两种操作。
instance.increment(fields, [options])
- 字段值自增instance.decrement(fields, [options])
- 字段值自减
如,查找id为1的用户,并将其年龄自增1
var User = sequelize.import('../lib/model/user/user'); User.findById(1).then(function(user){ user.increment('age').then(function(user){ console.log('suess'); }) })
其中increment()
方法生成的SQL语句如下
UPDATE `user` SET `age`=`age` + 1 WHERE `id` = 1
increment()
和decrement()
默认的自增、自减值是1。如果希望使用其它值,可在选项参数[options]中通过by参数指定。
如,将用户的number、age两个字段减小2,可以通过以下方式实现
user.increment(['age', 'number'], {by:2}).then(function(user){ console.log('suess'); })
生成的SQL如下
UPDATE `user` SET `age`=`age` + 2,`number`=`number` + 2 WHERE `id` = 1
fields参数还可以通过对象传入,并指定自增、自减值。这种情况下,会忽略options.by参数。
如,将用户的number增加2、age减小1
user.increment({age:-1, number:2}, {by:5}).then(function(user){ console.log('suess'); })
生成的SQL如下
UPDATE `user` SET `age`=`age` + -1,`number`=`number` + 2 WHERE `id` = 1
二、 批量自增、自减
increment()
和decrement()
都是针对单个实例进行自增或自减操作的,也就是说操作的数据为数据库中的一行数据。要实现类似如下批量自增、自减操作,就无法通过Instance操作
UPDATE `user` SET `age`=`age` + 1 WHERE `number` > 10;
在Sequelize中,指量操作一般是通过模型(Model)来实现。但Model并没有increment()
和decrement()
方法,无法像Instance那样方便的进行自增或自减。
这时,我们可以通过Model.update()
并借助sequelize中的顶级方法sequelize.literal()
来实现
sequelize.literal(val)
- 创建字面量对象
sequelize.literal()
方法用于创建一个字面量对象,该对象(val)会被直接传入所生成的SQL语句中,而不会进行任何转义。
如,将number大于10的用户年龄增加1
User.update({sex:sequelize.literal('`age` +1')}, {where:{number:{$gt:10}}}).then(function(user){ console.log('suess'); })
生成的SQL语句如下
UPDATE `user` SET `age`=`age` +1 WHERE `number` > 10
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程