[Solo Project -3] Sequelize 여러 모델 include하기, include안에 where 사용하는법

gun·2020년 7월 31일
0

solo-project

목록 보기
3/4

프로젝트 목적

지금 하고 있는 프로젝트는 대학생들의 필수 어플이라고 할수있는 에브리타임에서 영감을 받아 시작하게 되었다. 에브리타임의 가장 중요한 기능은 각 대학별로 유저를 나눠 해당 대학교 학생이 아니면 게시글을 볼수가 없다. 그로인해 각 대학교 학생들은 같은 학교 학생들만 소통할수 있으며 학교에 대한 불편함, 또는 민원, 맛집 등.. 을 공유할수 있는 지역 커뮤니티가 활성화 되게 된다.

그러나 중, 고등학생, 또는 학교를 다니지 않는 성인들은 해당 지역에 축제, 맛집, 볼거리를 주민들끼리 나누기 어렵기 때문에 생각하게 된 어플이다.

지역은 동네가 아닌 대전,서울 등 시 단위로 끊어 저장했다.

위 계획중 가장 먼저 해야할것은 유저의 지역정보를 통해 같은 지역에 있는 유저의 게시글만 보이게 해주는 작업이 필요했고 게시글 일일마다 지역 정보를 보관하기에는 효율적이지 않다는 생각을 해 유저 Table에 만 지역 정보를 저장해 게시글을 불러올때 include를 이용해서 해당 같은 지역의 유저의 게시글만 불러오게 코딩 하였다.


include 안에 include 쓰기, include안에 where쓰기

const location_Post = async function(req, res) {
    try{
 		//유저의 location을 params로 받아와준다.
        const { location } = req.query
  			//게시글을 찾아야 하므로 findAll을 이용해 게시글을 불러와준다.
       await Post.findAll({
           include: [
               {
               //Comments Table에서 include를 이용해 댓글을 쓴 User의 정보와 댓글 내용을 가져온다.
                model: Comments,
                include: [{
                    model: User
                }]
               },{
               //include안에 User model 에서 where을 이용해 location이 params와 같은 게시글만 불러온다.
                model: User, 
                where: {location: location}
               }
           ]
       }).then(result => {
           res.send(result)
       })
    }catch(error) {
        console.log(error)
        res.send(error)
    }
}

include 안에 include를 사용하고 또 include안에 where을 사용 해주므로서 같은 지역의 유저가 쓴 게시글만 정보를 넘겨주게 된다.

0개의 댓글