[TIL] 230615

김주희·2023년 6월 15일

내배캠 5주차 TIL

목록 보기
4/4

오늘의 목표

  1. 개인 프로젝트 - 게시글 목록 조회 API 수정
  2. 개인 프로젝트 - 게시글 상세 조회 & 작성 & 수정 & 삭제 API 구현

▶️ 게시글 목록 조회 API 수정

  • 임의로 배열을 만들어 불러오기 했던 부분을 실제 몽고디비에서 불러오는 걸로 수정했다!
  • 강의 예제에 장바구니 get 부분을 참조해서 했다.
router.get("/posts", (req, res) => {
  res.status(200).json({ posts })
});
router.get("/posts", async (req, res) => {
  const posts = await Posts.find({});

  const postList = posts.map((post) => {
    return {
      postId: post.postId,
      user: post.user,
      title: post.title,
    }
  })
  res.status(200).json({ post: postList })
})
  • 수정 전 후 코드, 수정 전 코드는 js 파일 내 posts라는 배열이 있었기 때문에 조회가 가능했던 코드. 수정 후 코드는 실제 몽고디비에 저장되어 있는 배열을 불러오는 코드. 배열 메소드 map을 써서 필요한 요소들만 리턴값에 넣었다. 역시나 오류가 떴는데,
module.exports = router;
  • 원래 있던 코드들 주석처리를 하면서 아래쪽에 모듈 부분까지 주석처리가 돼서 오류가 났다🤣 오타일까 코드 다시 짜보다 구글링해보니 답이 바로 나왔다 ㅋㅋㅋㅋㅋ 오류 메세지를 잘보쟈!!!!
TypeError: Router.use() requires a middleware function but got a Object

▶️ 게시글 수정 API

router.put("/posts/:postId", async (req, res) => {
  const { postId } = req.params;
  const { password, title, content } = req.body;

  const modifiedPost = await Posts.find({ postId });
  if (modifiedPost.length) {
    await Posts.updateOne({ password: password },
      { $set: { title: title, content: content } })
  }
  res.status(200).json({ success: true });
})
  • 처음에 req 객체를 어떻게 써야 하나 헷갈렸는데 과제 예제를 보니 수정 부분의 가져갈 데이터가 password, title, content였기 때문에 req.body로, postId는 정보를 가져와야 하기 때문에 req.params로 사용했다.
  • 수정부분에서는 패스워드를 참고로 제목과 내용을 수정가능하게 해야하기 때문에 조건문을 위와 같이 정의했다.
profile
꾸준히 하자

0개의 댓글