国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

node.js Sequelize實現單實例字段或批量自增、自減

2019-11-19 18:36:44
字體:
來源:轉載
供稿:網友

一、單實例自增、自減

在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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涡阳县| 浦江县| 彩票| 平武县| 安义县| 博湖县| 额敏县| 微博| 临城县| 青河县| 施甸县| 高唐县| 南川市| 朔州市| 澳门| 通州区| 凤山市| 株洲县| 安仁县| 高邑县| 民县| 应用必备| 万全县| 宜兰市| 安平县| 长顺县| 景东| 静海县| 小金县| 芮城县| 浦东新区| 四会市| 汤原县| 方正县| 石台县| 武穴市| 汶川县| 桦川县| 三门县| 锡林郭勒盟| 湘潭县|