인프런 커뮤니티 질문&답변

hi-ster님의 프로필 이미지
hi-ster

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

시퀄라이즈 실습하기

복습하고있습니다.

작성

·

182

0

복습하고 있습니다.
static associate(db) {
    db.User.hasMany(db.Comment, { foreignKey: 'commenter', sourceKey: 'id' });
}
 
static associate(db) {
    Comment.belongsTo(db.User,{ foreignkey:'commenter' , targetKey:'id' });
}
 
로 연결이 되었는데
 const comments = await Comment.findAll({
      include: {
        model: User,
        where: { id: req.params.id },
      },
  });
SELECT `Comment`.`id`, `Comment`.`comment`, `Comment`.`created_at`, `Comment`.`commenter`, `Comment`.`UserId`, `User`.`id` AS `User.id`, `User`.`name` AS `User.name`, `User`.`age` AS `User.age`, `User`.`married` AS `User.married`, `User`.`comment` AS `User.comment` FROM `comments` AS `Comment` INNER JOIN `users` AS `User` ON `Comment`.`UserId` = `User`.`id` AND `User`.`id` = '1';
 
comment.UserId로 가르키고 있는데 이게 commenter이 되야하는거 아닌가요? 이부분은 어디서 수정해야하는지 궁금합니다.
 
그리고 하나더 궁금한게
삭제나 이런것들 할때 임의로 날려서 남에 게시글 삭제하면 안되니 실무에서 매번 login id랑 글쓴 id랑 체크해서 확인하고 삭제처리되게 하나요? 아니면 더좋은 방법이 있나요?
 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

저 부분은 코드로는 수정이 힘들고 테이블을 직접 수정하셔야 합니다. 워크벤치나 SQL을 통해서요.

네 로그인 아이디는 매번 체크하시는 게 좋습니다.

1111

hi-ster님의 프로필 이미지
hi-ster
질문자

저부분 워크벤치에서 어떤식으로 수정을 해야하나요??

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

commenter와 UserId가 동시에 존재하니까 UserId 컬럼을 제거하시면 될 것 같습니다.

hi-ster님의 프로필 이미지
hi-ster
질문자

지금 필드에 userid컬럼 없는상태입니다. 저렇게 애러가나서 봐봤더니 commenter로 연결이 되어야하는데 쿼리문이 저렇게 날라가서 애러상태가 되어서 제대로 결과값이 안나옵니다.

두개가 있는상태가 아닙니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

associate 안에서 Comment.belongsTo가 아니라

db.Comment로 수정해보세요.

hi-ster님의 프로필 이미지
hi-ster
질문자

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


sql: "SELECT `Comment`.`id`, `Comment`.`comment`, `Comment`.`created_at`, `Comment`.`commenter`, `Comment`.`UserId`, `User`.`id` AS `User.id`, `User`.`name` AS `User.name`, `User`.`age` AS `User.age`, `User`.`married` AS `User.married`, `User`.`comment` AS `User.comment` FROM `comments` AS `Comment` INNER JOIN `users` AS `User` ON `Comment`.`UserId` = `User`.`id` AND `User`.`id` = '1';",

수정해도 같게나오고있습니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

Comment랑 User는 제 강좌랑 똑같나요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

근데 그 이전에, 테이블은 시퀄라이즈 쓰기 전에 sql로 만드신 걸로 하신거죠?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

https://github.com/ZeroCho/nodejs-book/blob/master/ch7/7.6/learn-sequelize/models/index.js

이것도 똑같구요?

hi-ster님의 프로필 이미지
hi-ster
질문자

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

이유를 찾은거같습니다.

foreignkey 쓸때 K대문자로 안하면 인식못하나요? ㄷ.ㄷ;;

아래로 하면 정상작동되고 위에껄로하니까 userId를 잡는거같네요!

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아.. 그렇습니다. 프로그래밍 언어는 대소문자 철저히 지키셔야 합니다.

hi-ster님의 프로필 이미지
hi-ster

작성한 질문수

질문하기