国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

Original 2016-12-26 16:36:58 1277
abstract:一、單實例自增、自減在Sequelize中,一個實例(Instance)表示數(shù)據(jù)庫中的一行記錄。Instance有兩種:由Model.build()創(chuàng)建的非持久化實例,和由Model.create()等方法創(chuàng)建的持久化實例。無論是持久化還是非持久化實例,都會有increment() 、decrement()兩人上方法,分別用于字段值的自增和自減兩種操作。instance.incremen

一、單實例自增、自減

在Sequelize中,一個實例(Instance)表示數(shù)據(jù)庫中的一行記錄。Instance有兩種:由Model.build()創(chuàng)建的非持久化實例,和由Model.create()等方法創(chuàng)建的持久化實例。無論是持久化還是非持久化實例,都會有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。如果希望使用其它值,可在選項參數(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()都是針對單個實例進行自增或自減操作的,也就是說操作的數(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那樣方便的進行自增或自減。

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

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

sequelize.literal()方法用于創(chuàng)建一個字面量對象,該對象(val)會被直接傳入所生成的SQL語句中,而不會進行任何轉(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)于node.js Sequelize實現(xiàn)單實例字段或批量自增、自減請關(guān)注PHP中文網(wǎng)(www.miracleart.cn)其它文章!

Release Notes

Popular Entries