1. 단일 인스턴스 자동 증가 및 자동 감소
Sequelize에서 인스턴스(Instance)는 데이터베이스의 레코드 행을 나타냅니다. 인스턴스에는 두 가지 유형이 있습니다. Model.build()에 의해 생성된 비영구 인스턴스와 Model.create()와 같은 메서드에 의해 생성된 영구 인스턴스입니다. 영구 인스턴스이든 비영구 인스턴스이든 필드 값을 각각 증가 및 감소시키는 데 사용되는 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입니다. 다른 값을 사용하고 싶다면 옵션 매개변수 [options]에 by 매개변수를 통해 지정하면 된다.
예를 들어 다음과 같은 방법으로 사용자의 번호와 연령 필드를 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 매개변수는 무시됩니다.
예를 들어 사용자 수를 2로 늘리고 나이를 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
2. 일괄 자동 증가 및 자동 감소
increment() 및 감소()는 모두 자동을 수행합니다. -단일 인스턴스에 대한 증가 또는 감소 이는 감소 작업으로, 작업 데이터가 데이터베이스의 데이터 행임을 의미합니다. 다음과 같은 일괄 자동 증가 및 자동 감소 연산을 구현하려면 인스턴스 연산을 사용할 수 없습니다.
UPDATE `user` SET `age`=`age` + 1 WHERE `number` > 10;
Sequelize에서는 일반적으로 인덱스 연산이 수행됩니다. 모델(모델)을 통해 달성합니다. 하지만 Model에는 increment(), decrement() 메소드가 없으므로 Instance만큼 편리하게 증가하거나 감소할 수 없습니다.
이때 우리는 Sequelize의 Model.update()와 최상위 메소드 Sequelize.literal()을 통해 구현할 수 있습니다:
sequelize.literal(val) - 리터럴 생성 object
sequelize.literal() 메서드는 리터럴 개체를 만드는 데 사용되며, 이 개체(val)는 이스케이프 없이 생성된 SQL 문에 직접 전달됩니다.
예를 들어, 숫자가 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
요약
위 내용은 이 글의 전체 내용입니다. 모두의 공부나 업무에 도움이 됩니다. 궁금한 점이 있으면 메시지를 남겨서 소통할 수 있습니다.
node.js 단일 인스턴스 필드의 Sequelize 구현이나 일괄 자동 증가 및 자동 감소 관련 기사를 더 보려면 PHP 중국어 웹사이트에 주목하세요!