最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js Sequelize實現(xiàn)單實例字段或批量自增、自減

 更新時間:2016年12月08日 11:48:54   投稿:daisy  
Sequelize 可以實現(xiàn)針對單個實例的一或多個字段的自增、自減操作,也可以對符合條件的數(shù)據(jù)進(jìn)行批量的自增、自減操作。單個實例字段的自增、自減可以利用Instance的相應(yīng)方法實現(xiàn),而批量自增、自減則需要借助sequelize提供的字面量方法實現(xiàn)。下面來看看詳細(xì)的介紹吧。

一、單實例自增、自減

在Sequelize中,一個實例(Instance)表示數(shù)據(jù)庫中的一行記錄。Instance有兩種:由Model.build()創(chuàng)建的非持久化實例,和由Model.create()等方法創(chuàng)建的持久化實例。無論是持久化還是非持久化實例,都會有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()默認(rèn)的自增、自減值是1。如果希望使用其它值,可在選項參數(shù)[options]中通過by參數(shù)指定。

如,將用戶的number、age兩個字段減小2,可以通過以下方式實現(xiàn):

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參數(shù)還可以通過對象傳入,并指定自增、自減值。這種情況下,會忽略options.by參數(shù)。

如,將用戶的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()都是針對單個實例進(jìn)行自增或自減操作的,也就是說操作的數(shù)據(jù)為數(shù)據(jù)庫中的一行數(shù)據(jù)。要實現(xiàn)類似如下批量自增、自減操作,就無法通過Instance操作:

UPDATE `user` SET `age`=`age` + 1 WHERE `number` > 10;

在Sequelize中,指量操作一般是通過模型(Model)來實現(xiàn)。但Model并沒有increment()decrement()方法,無法像Instance那樣方便的進(jìn)行自增或自減。

這時,我們可以通過Model.update()并借助sequelize中的頂級方法sequelize.literal()來實現(xiàn):

sequelize.literal(val) - 創(chuàng)建字面量對象

sequelize.literal()方法用于創(chuàng)建一個字面量對象,該對象(val)會被直接傳入所生成的SQL語句中,而不會進(jìn)行任何轉(zhuǎn)義。

如,將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

總結(jié)

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

相關(guān)文章

  • 2014年最火的Node.JS后端框架推薦

    2014年最火的Node.JS后端框架推薦

    用nodejs開發(fā)web應(yīng)用,用哪個框架好?express?還是其他什么?今天小編就來給大家推薦一下今年最好用的幾款Node.js后端框架
    2014-10-10
  • Nodejs異步回調(diào)之異常處理實例分析

    Nodejs異步回調(diào)之異常處理實例分析

    這篇文章主要介紹了Nodejs異步回調(diào)之異常處理,結(jié)合實例形式分析了nodejs基于中間件進(jìn)行異步回調(diào)異常處理過程出現(xiàn)的問題與相應(yīng)的解決方法,需要的朋友可以參考下
    2018-06-06
  • node.js學(xué)習(xí)之交互式解釋器REPL詳解

    node.js學(xué)習(xí)之交互式解釋器REPL詳解

    Node.js REPL(Read Eval Print Loop:交互式解釋器) 表示一個電腦的環(huán)境,類似Window 系統(tǒng)的終端或 Unix/Linux shell,我們可以在終端中輸入命令,并接收系統(tǒng)的響應(yīng)。下面這篇文章我們就來詳細(xì)的介紹下關(guān)于node.js交互式解釋器REPL的內(nèi)容,有需要的朋友們可以參考借鑒。
    2016-12-12
  • 深入探究node之Transform

    深入探究node之Transform

    這篇文章主要介紹了深入探究node之Transform,本文深入內(nèi)部闡述Transform的運行機理及使用技巧,有興趣的可以了解一下
    2017-07-07
  • 基于nodejs的微信JS-SDK簡單應(yīng)用實現(xiàn)

    基于nodejs的微信JS-SDK簡單應(yīng)用實現(xiàn)

    這篇文章主要介紹了基于nodejs的微信JS-SDK簡單應(yīng)用實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 更新Node.js的四種方法小結(jié)

    更新Node.js的四種方法小結(jié)

    Node.js是一個開放源代碼的跨平臺JavaScript運行環(huán)境,它在不同的平臺上都得到了廣泛使用和支持,強大的生態(tài)系統(tǒng)、持續(xù)的更新和不斷改進(jìn)的性能使得Node.js非常受歡迎,然而,更新Node.js仍然是一個必要的過程,本文給大家介紹一些有關(guān)如何更新Node.js的方法
    2023-11-11
  • Node.js創(chuàng)建一個簡單的服務(wù)器的實現(xiàn)

    Node.js創(chuàng)建一個簡單的服務(wù)器的實現(xiàn)

    Node.js是一個基于Chrome V8引擎的JavaScript運行時環(huán)境,可以在服務(wù)器端運行JavaScript代碼,本文主要介紹了Node.js創(chuàng)建一個簡單的服務(wù)器的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Node.js安裝配置圖文教程

    Node.js安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了Node.js安裝配置的圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • nodejs創(chuàng)建簡易web服務(wù)器與文件讀寫的實例

    nodejs創(chuàng)建簡易web服務(wù)器與文件讀寫的實例

    下面小編就為大家?guī)硪黄猲ode js系列課程-創(chuàng)建簡易web服務(wù)器與文件讀寫的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Node 創(chuàng)建第一個服務(wù)器應(yīng)用的操作方法

    Node 創(chuàng)建第一個服務(wù)器應(yīng)用的操作方法

    Node.js是一個基于Chrome V8引擎的JavaScript運行環(huán)境,可以用于構(gòu)建高性能的網(wǎng)絡(luò)應(yīng)用程序,它采用事件驅(qū)動、非阻塞I/O模型,使得程序可以以高效地方式處理并發(fā)請求,這篇文章主要介紹了Node 創(chuàng)建第一個服務(wù)器應(yīng)用,需要的朋友可以參考下
    2024-02-02

最新評論

寿阳县| 五台县| 岳普湖县| 盐源县| 银川市| 垫江县| 泸州市| 紫阳县| 方正县| 安国市| 五峰| 千阳县| 历史| 渭源县| 准格尔旗| 华亭县| 金秀| 揭西县| 寿光市| 隆化县| 饶平县| 竹溪县| 西丰县| 镇原县| 福建省| 乌拉特前旗| 新河县| 伊吾县| 仪征市| 息烽县| 瓦房店市| 廉江市| 花莲县| 莲花县| 噶尔县| 鄂托克旗| 遂宁市| 于田县| 翁牛特旗| 灌南县| 揭东县|