개인과제(게시판,댓글CRUD구현)

[내일배움캠프] 개인 과제 게시판/댓글 CRUD기능 구현하기-U/D-

김민커 2023. 6. 16. 19:14
//게시글 데이터 수정//
router.put("/posts/:id", async (req, res) => {
  id = req.params.id;
  //body에서 데이터 받음//
  const { content, password } = req.body;
  //url의 title이 있는지 확인//
  const [existsPost] = await Post.find({ _id: Object(id) });

  //url의 title이 존재한다면 if구문 없다면 else로//
  if (existsPost) {
    //데이터를 작성했는지 확인//
    if (content) {
      //비밀번호를 제대로 작성했는지 확인//
      if (existsPost.password != password) {
        return res.status(400).json({ message: "데이터형식을 확인해주세요" })
      } else {
        await Post.updateOne({ _id: Object(id) }, { $set: { content } })
      }
    } else { return res.status(400).json({ message: "데이터형식을 확인해주세요" }) }
  } else { return res.status(400).json({ message: "게시글 조회에 실패했습니다." }) }
  res.json({ message: "게시글을 수정하였습니다." })
})

routes/post.js의 게시글 데이터 수정 부분이다.

수정을 하기 위한 조건을 만들기 위해서 기존에 저장한 password 데이터와 생성된 오브젝트의 id를 사용했다.수정하기 위해 입력한 password와 저장된 password의 비교를 통해서 수정기능을 작동시킨다.수정은 updateOne({ _id: Object(id) }, { $set: { content } })으로 _id: Object(id)랑 데이터를 가지고 있는 db 데이터의 { content } 부분을 수정한다.

 

router.delete("/posts/:id", async (req, res) => {
  id = req.params.id;
  //body에서 데이터 받음//
  const { password } = req.body;
  //url의 title이 있는지 확인//
  const [existsPost] = await Post.find({ _id: Object(id) });

  //url의 title이 없다면 else로 있다면 if구문//
  if (existsPost) {
    //비밀번호를 제대로 작성했는지 확인//
    if (existsPost.password != password) {
      return res.status(400).json({ message: "데이터형식을 확인해주세요" })
    } else { await Post.deleteOne({ _id: Object(id) }) }
  } else { return res.status(400).json({ message: "게시글 조회에 실패했습니다." }) }
  res.json({ message: "게시글을 삭제해였습니다." });
})

routes/post.js의 게시글 데이터 삭제 부분이다.

기본적으로 수정과 똑같다. deleteOne으로 삭제기능을 구현했다.