개발노트

schema 본문

Node js/mysql sequelize

schema

aloha2jh 2020. 8. 23. 21:12

왜래키

Post테이블  

db.Post.belongsTo(db.User); // Post table에 user Id 컬럼이 생긴다

User 테이블 입장도 설정해줘야된다 (일대다 관계) 

user는 게시글을 많이 쓸수있으니까. 많이 갖고있으므로 hasMany

db.User.hasMany(db.Post, {as:'Posts'} )

 

as로 이름을 바꿔줄 수 있다 (javascript 객체에서 사용할 이름)

<-> foreignKey는 컬럼명에서 사용할 이름.

 

 

셀프조인

user테이블의 아이디 값으로 팔로잉, 팔로워 관계를 나타내는 팔로우 테이블을 만드는데,

        db.User.helongsToMany(db.User, {through:'Follow'});
        db.User.helongsToMany(db.User, {through:'Follow'});

user테이블을 통해서.. 팔로우 테이블을 만드니까 through

 

 

지금 following_id, follower_id 컬럼 둘다 user_id인것은 맞지만

이름이 같으면 안되니까 as로

        db.User.helongsToMany(db.User, {through:'Follow' ,as: 'Followers'});
        db.User.helongsToMany(db.User, {through:'Follow' ,as: 'Followings'});

 

as로 이름을 붙여봤자 (자바스크립트객체이름만바꾸는거고) 테이블컬럼명은 user_id가 되버림.

그래서 실제 db에서 구별하는 이름인 foreignKey 를 쓴다

 

 

왜래키는 말그대로 (상대방키를)참조하는 키 이기 때문에.. 

        db.User.helongsToMany(db.User, {through:'Follow' ,as: 'Followers', foreignKey:'followingId' });
        db.User.helongsToMany(db.User, {through:'Follow' ,as: 'Followings', foreignKey:'followerId' });

 

(자기자신을 참조할순 없는 논리?로 그런건가....)

 

'Node js > mysql sequelize' 카테고리의 다른 글

sequelize 사용  (0) 2020.07.07
sequelize 프로젝트만들기  (0) 2020.07.05