• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

좋아요 기능 구현중

24.04.01 21:15 작성 조회수 122

0

models/user에서

 

static associate(db){
        db.User.belongsToMany(db.Post,{
            foreignKey: 'postId',
            as: 'LikedPosts',
            through: 'Like',
        });
    }   

 

그리고

 

models/post에서

static associate(db){
        db.Post.belongsToMany(db.User,{
            foreignKey: 'userId',
            as: 'LikingUsers',
            through: 'Like',
        });
    }

이렇게 해놓았는데

이러면 좋아요와 좋아요취소기능은 잘 작동하고 이를통해 프로필을 볼때 사용자가 좋아요한 게시글들만 볼 수 있는 기능도 잘 작동합니다.

하지만 mysql workbench를 보면
이와같이 userId에 post의 Id가, postId에는 userId가 들어가있는데요, 그래서 foreignKey를 post에선 postId로, user 에선 userId로 바꿨더니


Like 테이블에 삽입하려는 postIdusers 테이블의 id와 관련하여 참조 무결성 제약 조건을 위반했다

는 오류가 뜹니다! ㅜ

왜이런 현상들이 일어나는지 검색을 해도 안나와서 여쭤봅니다!

답변 2

·

답변을 작성해보세요.

0

김창훈님의 프로필

김창훈

질문자

2024.04.01

질문있습니다.
에서 저와 같이 반대로 나오는 경우인것 같은데, 해당 작성자는 post와 following을 혼동하여 써서 내용이해에 어려움이 있습니다. 혹시 괜찮으시면 제 경우에서의 답글을 받을 수 있을까요?

제가 봤을 때는 foreignKey는 그대로 두되, as를 서로 바꿔야할 것 같습니다.

User.belongsToMany(posts, as: LikedUser)이어야 해석 시 한 유저가 많은 게시글에 속해있다, 좋아요누른유저로서... 라는 의미가 됩니다.

김창훈님의 프로필

김창훈

질문자

2024.04.02

와..감사합니다.. 이해가 갑자기 확되네요. 역시 영어를 잘해야되네요 ㅜㅜ

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.01

안녕하세요, 인프런 AI 인턴입니다. 김창훈 님의 질문과 연관된 내용을 찾아보았을 때, 강의 내 제공된 정보 중에는 정확한 답변과 직접적으로 연결되는 부분을 찾지 못했습니다. 하지만 유사한 주제를 다룬 질문이 있으므로, 이를 참조해보는 것이 도움이 될 수 있습니다.

좋아요 기능 구현 및 Sequelize의 관계 설정에 대한 상세한 설명이 포함된 유사한 질문링크는 아래와 같습니다.

  • 좋아요 기능 구현에서 처럼 foreignKeyas 옵션을 통해 Sequelize에서 다대다 관계 설정하는 방법에 대해 설명하고 있습니다. 여기서 중요한 것은 foreignKeyas 옵션을 올바르게 설정해야 각 테이블 간의 관계가 정확히 매핑되는 것입니다.

  • 질문있습니다.에서 belongsTobelongsToMany 메소드를 사용하여 Sequelize에서 모델 간 관계를 설정하는 과정에서 발생할 수 있는 일반적인 혼란에 대해 설명하고 있습니다. 특히, foreignKey 설정과 관련된 문제를 해결하는 방법에 대한 힌트를 얻을 수 있습니다.

foreignKey 설정에서 겪고 있는 문제는 이런 관계 설정에서 자주 마주치는 혼란 중 하나로, foreignKey 옵션을 사용하여 어느 모델의 어느 키를 참조할 것인지 명확하게 지정해야 합니다. 게시글 (Post)과 사용자 (User) 사이에 Like 모델을 통한 다대다 관계에서, 각각의 foreignKey는 다른 모델의 id를 참조해야 하며, 설정이 반대로 되어 있을 때 참조 무결성 제약 조건 오류가 발생할 수 있습니다.

질문에 대해 보다 명확한 답변이 필요한 경우, Sequelize의 공식 문서나 Sequelize 관련 질문 포럼을 참고하시거나, 강의의 Q&A 섹션에 질문을 올려 직접적인 도움을 받으시는 것을 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김창훈님의 프로필

김창훈

질문자

2024.04.01

질문있습니다.
에서 저와 같이 반대로 나오는 경우인것 같은데, 해당 작성자는 post와 following을 혼동하여 써서 내용이해에 어려움이 있습니다. 혹시 괜찮으시면 제 경우에서의 답글을 받을 수 있을까요?