一、单实例自增、自减

在Sequelize中,一个实例(Instance)表示数据库中的一行记录。Instance有两种:由Model.build()创建的非持久化实例,和由Model.create()等方法创建的持久化实例。无论是持久化还是非持久化实例,都会有increment()decrement()两人上方法,分别用于字段值的自增和自减两种操作。

  1. instance.increment(fields, [options]) - 字段值自增
  2. 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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

node.js Sequelize实现单实例字段或批量自增、自减的更多相关文章

  1. java生成自增编号数字的问题

    这篇文章主要介绍了java生成自增编号数字的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. PHP 布尔值的自增与自减的实现方法

    这篇文章主要介绍了PHP 布尔值的自增与自减的实现方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧

  3. Nodejs Sequelize手册学习快速入门到应用

    这篇文章主要为大家介绍了Nodejs Sequelize手册学习快速入门到应用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. 关于Sequelize连接查询时inlude中model和association的区别详解

    这篇文章主要介绍了关于Sequelize连接查询时inlude中model与association的区别,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。

  5. Node.js中sequelize时区的配置方法

    这篇文章主要给大家介绍了关于Node.js中sequelize时区的配置方法,文中先对时区的基础概念进行了简单介绍,然后通过示例代码详细介绍了sequelize时区的配置方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

  6. Android 配置gradle实现VersionCode自增实例

    今天小编就为大家分享一篇Android 配置gradle实现VersionCode自增实例,具有很好的 参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  7. Sequelize中用group by进行分组聚合查询

    大家都知道在SQL查询中,分组查询是较常用的一种查询方式。分组查询是指通过GROUP BY关键字,将查询结果按照一个或多个字段进行分组,分组时字段值相同的会被分为一组。在Node.js基于Sequelize的ORM框架中,同样支持分组查询,使用非常简单方便。下面来看看详细的介绍。

  8. 基于jQuery实现点击最后一行实现行自增效果的表格

    现在任何事务都追求效率和人性化,当然网页效果也是如此,如果一个可以编辑数据的表格,编辑到最后一行的时候,点击可以自动添加一行,这样算是一个比较人性化的效果,可以免去一丝劳顿之苦,下面分享一段这样的代码

  9. Redis使用Eval多个键值自增的操作实例

    下面小编就为大家带来一篇Redis使用Eval 多个键值自增的操作实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Node.JS使用Sequelize操作MySQL的示例代码

    Node.JS提供了操作数据库的基础接口,本篇文章主要介绍了Node.JS使用Sequelize操作MySQL的示例代码,具有一定的参考价值,有兴趣的可以了解一下

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部