• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

질문이 계속생기네요...

20.03.17 23:30 작성 조회수 80

0

sns 만들기 sequelize 관련 질문입니다.

1. User와 Post가 일대다 관계인데 이전 섹션 7에서의 User와 Comment처럼 foreinKey를 이용해서 연결을 위한 컬럼을 만들지 않은 이유가 로그인 상태에서 post하기때문에 req.user를 만들수있고 여기서 req.user.id를 들고올 수 있기 때문인가요?

그런거면 로그인 상태에서는 언제든지 id를 가져올 수 있으니까 굳이 새 컬럼을 만들어줄 필요가 없는건가요?

2. posthashtag에서 post.addHashtags를 하고 workbench를 보니까 createdAt, updatedAt, followingId, followerId 이렇게 4개가 있더라구요. createdAt은 사용자가 지정하지 않으면 db에서 만들어주신다고 하셨었는데  postId와 hashtagId도 그냥 post의 id, hashtag의 id로 만들어주는건가요? (제 기억에는 postId, hashtagId를 만들어준적이 없어서...)

3. 만약에 저것도 알아서 만들어주는거면 follow를 할때 

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

만약 위에서 followingId: 1, followerId: 2 가 연결되어 있다고하면 

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

이렇게 했을 때 userId: 1 과 userId: 2가 연결되는건가요?

followerId와 followingId는 그냥 보기 편하게 구분하기 위해서 설정해주는건가요?

4. 직접 model 폴더에 스키마를 만들어주었을 경우에는 id가 붙는데 관계를 맺어주기위해 만든 스키마(follow, like)는 id가 없습니다. 이것도 그냥 시퀄라이즈에서 해주는 작업인가요? 

답변 1

답변을 작성해보세요.

0

1. userId 컬럼이 자동으로 생깁니다.

2. 마찬가지로 관계연결 시 postId hashtagId 컬럼이 자동으로 생깁니다.

3. 같은 테이블간의 다대다 관계에서는 자동생성 컬럼 이름이 userId userId로 같으니까 foreignKey로 이름을 다르게 설정해줍니다.

4. 다대다테이블에서 아이디는 postId hashtagId같은 것아 복합id로 지정됩니다.

이러한 부분은 sql을 따로 공부하셔야 합니다.