해결된 질문
작성
·
307
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
테이블에 삽입하려는 postId
가 users
테이블의 id
와 관련하여 참조 무결성 제약 조건을 위반했다
는 오류가 뜹니다! ㅜ
왜이런 현상들이 일어나는지 검색을 해도 안나와서 여쭤봅니다!
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 김창훈 님의 질문과 연관된 내용을 찾아보았을 때, 강의 내 제공된 정보 중에는 정확한 답변과 직접적으로 연결되는 부분을 찾지 못했습니다. 하지만 유사한 주제를 다룬 질문이 있으므로, 이를 참조해보는 것이 도움이 될 수 있습니다.
좋아요 기능 구현 및 Sequelize의 관계 설정에 대한 상세한 설명이 포함된 유사한 질문링크는 아래와 같습니다.
좋아요 기능 구현에서 처럼 foreignKey
와 as
옵션을 통해 Sequelize에서 다대다 관계 설정하는 방법에 대해 설명하고 있습니다. 여기서 중요한 것은 foreignKey
와 as
옵션을 올바르게 설정해야 각 테이블 간의 관계가 정확히 매핑되는 것입니다.
질문있습니다.에서 belongsTo
와 belongsToMany
메소드를 사용하여 Sequelize에서 모델 간 관계를 설정하는 과정에서 발생할 수 있는 일반적인 혼란에 대해 설명하고 있습니다. 특히, foreignKey
설정과 관련된 문제를 해결하는 방법에 대한 힌트를 얻을 수 있습니다.
foreignKey
설정에서 겪고 있는 문제는 이런 관계 설정에서 자주 마주치는 혼란 중 하나로, foreignKey
옵션을 사용하여 어느 모델의 어느 키를 참조할 것인지 명확하게 지정해야 합니다. 게시글 (Post)과 사용자 (User) 사이에 Like
모델을 통한 다대다 관계에서, 각각의 foreignKey
는 다른 모델의 id
를 참조해야 하며, 설정이 반대로 되어 있을 때 참조 무결성 제약 조건 오류가 발생할 수 있습니다.
질문에 대해 보다 명확한 답변이 필요한 경우, Sequelize의 공식 문서나 Sequelize 관련 질문 포럼을 참고하시거나, 강의의 Q&A 섹션에 질문을 올려 직접적인 도움을 받으시는 것을 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
제가 봤을 때는 foreignKey는 그대로 두되, as를 서로 바꿔야할 것 같습니다.
User.belongsToMany(posts, as: LikedUser)이어야 해석 시 한 유저가 많은 게시글에 속해있다, 좋아요누른유저로서... 라는 의미가 됩니다.