一、单实例自增、自减
在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('success'); }) })
其中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('success'); })
生成的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('success'); })
生成的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('success'); })
生成的SQL语句如下:
UPDATE `user` SET `age`=`age` +1 WHERE `number` > 10
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]