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

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

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

一、單實(shí)例自增、自減

在Sequelize中,一個(gè)實(shí)例(Instance)表示數(shù)據(jù)庫(kù)中的一行記錄。Instance有兩種:由Model.build()創(chuàng)建的非持久化實(shí)例,和由Model.create()等方法創(chuàng)建的持久化實(shí)例。無(wú)論是持久化還是非持久化實(shí)例,都會(huì)有increment() 、decrement()兩人上方法,分別用于字段值的自增和自減兩種操作。

  1. instance.increment(fields, [options]) - 字段值自增
  2. instance.decrement(fields, [options]) - 字段值自減

如,查找id為1的用戶(hù),并將其年齡自增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語(yǔ)句如下:

UPDATE `user` SET `age`=`age` + 1 WHERE `id` = 1

increment()decrement()默認(rèn)的自增、自減值是1。如果希望使用其它值,可在選項(xiàng)參數(shù)[options]中通過(guò)by參數(shù)指定。

如,將用戶(hù)的number、age兩個(gè)字段減小2,可以通過(guò)以下方式實(shí)現(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ù)還可以通過(guò)對(duì)象傳入,并指定自增、自減值。這種情況下,會(huì)忽略options.by參數(shù)。

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

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

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

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

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

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

如,將number大于10的用戶(hù)年齡增加1:

User.update({sex:sequelize.literal('`age` +1')}, {where:{number:{$gt:10}}}).then(function(user){
 console.log('success');
})

生成的SQL語(yǔ)句如下:

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

    深入探究node之Transform

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

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

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

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

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

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

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

    Node.js安裝配置圖文教程

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

    nodejs創(chuàng)建簡(jiǎn)易web服務(wù)器與文件讀寫(xiě)的實(shí)例

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

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

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

最新評(píng)論

绥中县| 什邡市| 扬中市| 清水县| 元阳县| 德化县| 上虞市| 麦盖提县| 儋州市| 乐清市| 潼关县| 徐州市| 辽宁省| 仁布县| 嘉善县| 淄博市| 绥阳县| 萝北县| 湘阴县| 咸丰县| 永胜县| 台东县| 巩留县| 精河县| 壤塘县| 普格县| 津市市| 溧阳市| 双辽市| 昌宁县| 瑞丽市| 广东省| 辉南县| 叶城县| 鄢陵县| 舟山市| 连山| 两当县| 彭山县| 永泰县| 准格尔旗|