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

wdhgood123님의 프로필 이미지
wdhgood123

작성한 질문수

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

api추가 질문입니다

작성

·

168

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에 대해 정확히 어떠한 인과관계가 나타는지 설명해주실수 있나요?

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

 

 

 

 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
wdhgood123님의 프로필 이미지
wdhgood123

작성한 질문수

질문하기