인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

김로인님의 프로필 이미지
김로인

작성한 질문수

React로 NodeBird SNS 만들기

6-11. 폼데이터로 게시글 올리기

제로초님~

작성

·

240

0

씨퀄라이저 에서 데이터를 같이 가져 올떄는 

join문을 사용 하라고 도움을 주셔서 join문을 공부 하고 있습니다. 

제가 지금 짠 query는 

SELECT Post.id, Post.content, Post.createdAt, Post.updatedAt, Post.UserId, Post.RetweetId, `User`.`id` AS `User.id`, `User`.`nickname`, `Likers->Like`.`UserId`  FROM Posts AS Post LEFT OUTER JOIN Users AS USER ON Post.UserId = User.id  

LEFT OUTER JOIN ( `Like` AS `Likers->Like` INNER JOIN `Users` AS `Likers` ON `Likers`.`id` = `Likers->Like`.`UserId`) ON `Post`.`id` = `Likers->Like`.`PostId` ORDER BY `Post`.`createdAt` DESC LIMIT 10

이런 형태로 결과는 

이런식으로 다 붙어서 나오고 있습니다. 

그런데 서큘에서 한 결과 물을 봤을때

해당 글의 id별로 likers로 구분지어서 나오더라구여 

어떻게 하면 이런식으로 구분 지어 질수 있는 지 알수 있을까요?!

group by를 사용 해야 하나요?

답변 4

0

김로인님의 프로필 이미지
김로인
질문자

힌트 좀 주실수 있을까요? 저는 어떻게 생각을 했냐면 다중 쿼리를 사용 하여 

result에 들어 가 있는 값을 

db.getMap((result) => {

        for ( var i = 0; i < result.length; i++ ) {

            aa  = [{

                "name":result[i].name,    

                "user":{"result":result[i]._id}

            }]

        }

        res.json(aa);

    });

이 포멧으로 json 형식으로 만들어 보려고 했는데 

혹시 반복문 으로 한 번 돌려서 하는 방식은 생각을 안해봐서 

foreach로 돌려 그냥  앞에 각각의 as로 설정 해주는 user, like 같은 걸 찾아서 

push해주실 생각 이신가요??

그리고 

중복 되는 부분은 필터 를 사용해서 해야 할까요?!

힌트좀 부탁 드리겠습니다.

0

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

네네 맞습니다. 자바스크립트로 처리해주셔야 합니다. 반복문 한 번 돌려서요.

0

김로인님의 프로필 이미지
김로인
질문자

그렇군요 그럼 쿼리로 받아와서 2차로 작업을 해줘야 하는 건가요?

0

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

이 부분은 시퀄라이즈에서 처리를 해주는 것이라 단순한 SQL 쿼리로는 힘듭니다.

김로인님의 프로필 이미지
김로인

작성한 질문수

질문하기