본문 바로가기

공부/Node.js

[Node.js] 시퀄라이즈 (2)

설마 MySql에서 2개의 포스팅을 하게 될 줄은 몰랐네요 코드가 조금씩 길어지다보니 이렇게 되었지만 데이터베이스는 아주 중요하니 충분히 길게 적어도 좋을 것 같습니다.

 

...
    static associate(db) {
        db.User.hasMany(db.Comment, { foreignKey : 'commenter', sourceKey : 'id'});
    }
...

 

이 코드는 User의 코드로 1 : N의 관계에서 hasMany는 1 -> N의 관계를 표현합니다. 반대로 1 <- N belongsTo로 표현합니다.

 

...    
    static associate(db) {
        db.Comment.belongsTo(db.User, { foreignKey: 'commenter', targetKey : 'id'});
    }
...

 

위의 코드와 동일합니다. 구조를 살펴보현 belongsTohasMany는 같은 구조를 가지고 있습니다. 외래키와 sourceKey 혹은 targetKey를 가지고 있습니다.

 

'정보가 들어가는 테이블' belongsTo를 사용하면 됩니다. 위의 코드는 user.js이고 밑의 코드는 comment.js 실제로 코멘트를 적게되면 user -> comment로 들어가기 때문에 comment에 belongsTo를 달아주면 됩니다.

 

 

저장 후 npm start를 하면 로그에서 위와 같은 것을 볼 수 있는데 시퀄라이즈가 스스로 실행하는 SQL 문입니다.

 

hasMany : 1 : M 에서 보내는 Model의 associate에 사용

hasOne : 1 : 1:1 상황에서 hsaMany와 같은 방식으로 사용

belongsTo : hasMany 혹은 hasOne과 짝으로 정보가 들어가는 테이블에서 belongsTo를 사용

belongsToMany : N:M에서 사용하는 메서드로 sourcekey와 targetkey를 사용하는 hasMany와 hasOne과 달리 throught에 인덱스 테이블의 이름을 넣어서 사용

 

일단 여기까지 설정을 완료했습니다.

'공부 > Node.js' 카테고리의 다른 글

[Node.js] Node.js 교과서 중간 후기  (1) 2020.08.25
[Node.js] 시퀄라이즈 (3)  (0) 2020.08.24
[Node.js] 시퀄라이즈 (1)  (0) 2020.08.24
[Node.js] 넌적스  (0) 2020.08.21
[Node.js] REST  (2) 2020.08.18