データ
以下のようなデータを入れたUsersテーブルを作成します。モデル名はUserです。
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
1 |
2019-03-20 21:58:30 |
2019-03-20 21:58:30 |
このbooksCount
の値に対して変更を加えていきます。
インクリメント
booksCountに1プラスします。
'use strict';
const db = require('./models/index')
db.User
.increment('booksCount', {where: { id: 1 }})
.then(()=>{
db.sequelize.close()
})
SQL
Executing (default): UPDATE `Users` SET `booksCount`=`booksCount`+ 1,`updatedAt`='2019-03-20 22:03:01' WHERE `id` = 1
updatedAtも同時に更新されています。
実行前
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
1 |
2019-03-20 21:58:30 |
2019-03-20 21:58:30 |
実行後
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
2 |
2019-03-20 21:58:30 |
2019-03-20 22:03:01 |
デクリメント
booksCountから1マイナスします。
'use strict';
const db = require('./models/index')
db.User
.decrement('booksCount', {where: { id: 1 }})
.then(()=>{
db.sequelize.close()
})
SQL
Executing (default): UPDATE `Users` SET `booksCount`=`booksCount`- 1,`updatedAt`='2019-03-20 22:05:05' WHERE `id` = 1
updatedAtも同時に更新されています。
実行前
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
2 |
2019-03-20 21:58:30 |
2019-03-20 22:03:01 |
実行後
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
1 |
2019-03-20 21:58:30 |
2019-03-20 22:05:05 |
デクリメント(マイナスにならないようにする)
デクリメント時にマイナスにならないようにするにはwhereでの条件を追加します。
'use strict';
const db = require('./models/index')
const Op = db.Sequelize.Op
db.User
.decrement('booksCount', {where: { id: 1 , booksCount: {[Op.gt]: 0}}})
.then(()=>{
db.sequelize.close()
})
SQL
Executing (default): UPDATE `Users` SET `booksCount`=`booksCount`- 1,`updatedAt`='2019-03-20 19:54:45' WHERE `id` = 1 AND `booksCount` > 0
2以上の値を加える
booksCountに2プラスします。
'use strict';
const db = require('./models/index')
const Op = db.Sequelize.Op
db.User
.increment('booksCount', {by: 2, where: { id: 1 }})
.then(()=>{
db.sequelize.close()
})
SQL
Executing (default): UPDATE `Users` SET `booksCount`=`booksCount`+ 2,`updatedAt`='2019-03-20 22:07:37' WHERE `id` = 1
実行前
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
1 |
2019-03-20 21:58:30 |
2019-03-20 22:05:05 |
実行後
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
3 |
2019-03-20 21:58:30 |
2019-03-20 22:07:37 |
2以上の値を減らす
booksCountに2マイナスします。
'use strict';
const db = require('./models/index')
const Op = db.Sequelize.Op
db.User
.decrement('booksCount', {by: 2, where: { id: 1 }})
.then(()=>{
db.sequelize.close()
})
SQL
Executing (default): UPDATE `Users` SET `booksCount`=`booksCount`- 2,`updatedAt`='2019-03-20 22:10:27' WHERE `id` = 1
実行前
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
3 |
2019-03-20 21:58:30 |
2019-03-20 22:07:37 |
実行後
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
1 |
2019-03-20 21:58:30 |
2019-03-20 22:10:27 |
updatedAtを更新しない
silentというオプションがあるのでこちらをtrueにします。
'use strict';
const db = require('./models/index')
const Op = db.Sequelize.Op
db.User
.increment('booksCount', {where: { id: 1 }, silent: true})
.then(()=>{
db.sequelize.close()
})
SQL
Executing (default): UPDATE `Users` SET `booksCount`=`booksCount`+ 1 WHERE `id` = 1
実行前
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
1 |
2019-03-20 21:58:30 |
2019-03-20 22:10:27 |
実行後
id |
name |
booksCount |
createdAt |
updatedAt |
1 |
郷田 |
2 |
2019-03-20 21:58:30 |
2019-03-20 22:10:27 |
参照