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

wdhgood123님의 프로필 이미지

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

api추가 질문입니다

22.05.26 05:02 작성

·

163

0

api 추가 질문입니다.

router.get('/search/:hashtag', async (req, res, next) => {
  try {
    const result = await request(
      req, `/posts/hashtag/${encodeURIComponent(req.params.hashtag)}`,// 문자를 UTF-8로 인코딩
    );
    res.json(result.data);
  } catch (error) {
    if (error.code) {
      console.error(error);
      next(error);
    }
  }
});

이 코드에서 :hashtag는 인코드 되어서 request함수에 넣었습니다.

router.get('/posts/hashtag/:title', verifyToken, async (req, res) => {
  try {
    const hashtag = await Hashtag.findOne({ where: { title: req.params.title } });
    if (!hashtag) {
      return res.status(404).json({
        code: 404,
        message: '검색 결과가 없습니다',
      });
    }
    const posts = await hashtag.getPosts();
    return res.json({
      code: 200,
      payload: posts,
    });
  } catch (error) {
    console.error(error);
    return res.status(500).json({
      code: 500,
      message: '서버 에러',
    });
  }
});

request함수는 헤더의 authorization에 토큰을 넣어서 이 라우터에 요청합니다.

그렇다면 이 코드의 :title 속성은 인코드된 문자열이지 않나요?

Hashtag모델에 인코드된 문자열이 저장되는 것도 아니던데 왜 인코드된 문자열을 다시 디코드하지 않나요?

const posts = await hashtag.getPosts();
    return res.json({
      code: 200,
      payload: posts,
  });

또 Post에 있는 hashtag를 가져와 posts에 넣어서 json형식으로 출력했더니

이런 형태의 데이터가 나왔는데

Post모델에서 조건에 맞는 hashtag를 가져온것은 이해 했습니다.

그러나 PostHashtag테이블과 UserId컬럼은 왜 가져온것인가요?

혹시 관계 메서드 add set remove get에 대해 정확히 어떠한 인과관계가 나타는지 설명해주실수 있나요?

대충 느낌은 오지만 긴가민가 합니다 ㅜㅜ

 

 

 

 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!