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에 대해 정확히 어떠한 인과관계가 나타는지 설명해주실수 있나요?
대충 느낌은 오지만 긴가민가 합니다 ㅜㅜ