7.6.4.1 관계 쿼리
findOne이나 findAll 메서드를 호출할 때 프로미스의 결과로 모델을 반환합니다(findAll은 모두 찾는 것이므로 모델의 배열을 반환합니다).
const user = await User.findOne({}); console.log(user.nick); // 사용자 닉네임
User 모델의 정보에도 바로 접근할 수 있지만, 더 편리한 점은 관계 쿼리를 지원한다는 것입니다. MySQL로 따지면 JOIN 기능입니다. 현재 User 모델은 Comment 모델과 hasMany-belongsTo 관계가 맺어져 있습니다. 만약 특정 사용자를 가져오면서 그 사람의 댓글까지 모두 가져오고 싶다면 include 속성을 사용합니다.
const user = await User.findOne({ include: [{ model: Comment, }] }); console.log(user.Comments); // 사용자 댓글
어떤 모델과 관계가 있는지를 include 배열에 넣어주면 됩니다. 배열인 이유는 다양한 모델과 관계가 있을 수 있기 때문입니다. 댓글은 여러 개일 수 있으므로(hasMany) user.Comments로 접근 가능합니다. 또는 다음과 같이 댓글에 접근할 수도 있습니다.
const user = await User.findOne({}); const comments = await user.getComments(); console.log(comments); // 사용자 댓글