> 웹 프론트엔드 > JS 튜토리얼 > node.js Sequelize는 단일 인스턴스 필드 또는 일괄 자동 증가 및 자동 감소를 구현합니다.

node.js Sequelize는 단일 인스턴스 필드 또는 일괄 자동 증가 및 자동 감소를 구현합니다.

高洛峰
풀어 주다: 2016-12-28 11:16:18
원래의
2129명이 탐색했습니다.

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 중국어 웹사이트에 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿