시퀄라이즈 CRUD 메소드와 스페셜 메소드(association)

HAN·2021년 6월 13일
0

sequelize

목록 보기
1/2

서버 구축 후에 프론트와 데이터를 주고받기를 본격적으로 설계할 때 CRUD메소드와 스페셜 메소드가 너무나 자주 쓰이므로 도큐먼트를 보면서 정리해보았다.

시퀄라이즈 CRUD 메소드

시퀄라이즈 Doc : model-querying-finders

R

User.findAll({ where : { id : 1 }})

: 조건에 맞는 행 모두 조회 => [] 안에 모델 인스턴스 객체를 넣어 반환
조건을 입력하지 않으면 전체 테이블 조회가 됨

User.findOne({ where : { id : 1 } } )

: 조건에 맞는 첫번째 행 조회 => 모델 인스턴스 객체 반환

User. findByPk(1)

: pk가 1인 행만 조회 => 모델 인스턴스 객체 반환

User.findOrCreate({ where : { id : 1 }, defaults : { key : value } } )

: 조건에 맞는 행을 찾으면 조회 => 조건에 맞는 인스턴스 객체 반환(user)
: 없다면 default로 생성 => 생성 성공 여부를 boolean 값으로 반환(created)

User.findAndCountAll({ where : { id : 1 } } )

=> 조건에 맞는 인스턴스의 수 반환(count)
: 조건에 맞는 행을 모두 조회 => [] 안에 모델 인스턴스 객체를 넣어 반환(row)

C

User.create( { age : 30 } )

: 입력 값에 맞는 행을 생성

User.bulkCreate([{ name: 'Jack Sparrow' }, { name: 'Davy Jones' } ] );

: 입력값에 맞는 여러 행을 동시에 생성 => [] 안에 생성된 모델 인스턴스 객체를 넣어 반환

U

User.update({ age : 31, name : Jane }, { where : { id : 1 } )

: 조건에 맞는 행을 찾아 업데이트 => 모델인스턴스는 아닌듯.. 성공여부를 불린값으로..안나옴..

D

User.destroy({ where : { id : 1 }})

: 조건에 맞는 행을 찾아 삭제 => ... 안나옴

시퀄라이즈 스페셜 메소드

시퀄라이즈 스페셜 메소드 doc

스페셜 메소드란?

  • 관계가 정의된 두 모델의 인스턴스 간에는 서로 관계를 맺을 수 있는 스페셜 메소드가 내장된다.
  • 이 메소드를 통해 두 인스턴스 간의 관계를 만들 수 있다.
  • 접근자(accessor)라고도 한다.
  • 접근자의 복수형 여부는 연결관계에 의존한다. 연결관계에서 후자가 다수형이면 s가 붙는것.

일대일(USER - PROFILE)

const user = await User.create({ name : yang })
const profile1 = await Profile.create({ age : 30 })
const profile2 = await Profile.create({ age : 20 })

user.getProfile()

=> 현재 user 인스턴스에 조인되어 있는 profile 모델의 테이블 가져오기
// 없으면 null => 해당 테이블 객체 반환

user.setProfile(profile1)

=> 현재 user 인스턴스의 조인되어 있는 profile 모델의 테이블을 profile1 으로 set 하기
=> 반환하는 객체 없음

user.setProfile(null)

=> 현재 user 인스턴스에 조인되어 있는 profile 모델의 관계 끊기(초기화 set)
=> 반환하는 객체 없음

user.createProfile()

=> 새롭게 profile 테이블을 생성해서 user 인스턴스에 조인시킨다.
=> 반환하는 객체 없음

일대다(USER - POST)

const post1 = await Post.create({ title : ‘제목1’ })
const post2 = await Post.create({ title : ‘제목2’ })

user.getPost => same with 일대일

user.setPost => same with 일대일

user.createPost => same with 일대일

user.addPost(post1)

=> user 인스턴스에 조인된 Post 테이블에 post1 인스턴스 추가하기
user.addPosts([post1, post2]) => user 인스턴스에 조인된 Post 테이블에 post1,2 인스턴스 추가하기

user.removePost(post1)

=> user 인스턴스에 조인된 Post 테이블 중 post1 인스턴스 제거하기

user.removePosts([post1, post2])

=> user 인스턴스에 조인된 Post 테이블 중 post1,2 인스턴스 제거하기

user.hasPost(post1)

=> user 인스턴스에 post1 인스턴스가 조인되어 있는지 여부 반환(bool)

user.hasPosts([post1, post2])

=> user 인스턴스에 post1,2 인스턴스가 조인되어 있는지 여부 반환(bool)

다대다(POST - POST)

일대 다와 같다.

profile
즐거운 배움이 되길

0개의 댓글