12/19 TIL

taetae·2022년 12월 19일
0

내배캠 TIL

목록 보기
21/48
post-custom-banner

개인 프로젝트 마무리

게시판 CRUD만 완성한 상태에서 게시물 댓글 기본 CRUD까지 마무리 했다.
기본적인 api는 마무리 한 셈. 댓글 부분을 완성하고 이해하게끔 도움을 많이 준 정민님께 무한한 감사를.
프로젝트를 마무리 지으면서 확실하게 알게 된 부분을 정리하는 시간을 갖겠다.


Async & await 비동기처리

한 번에 하나의 작업만 할 수 있는 싱글 스레드인 자바스크립트는 동기식 언어인데 이를 보완하기 위해 비동기가 생겨났다. 비동기 방식에는 콜백 함수, promise, async&await 이렇게 크게 세가지가 있다.
구글링을 통해 콜백을 보완하기 위해 promise가 promise를 보완하기 위헤 async가 생겼다고 이해했다.
일단 이번 프로젝트에는 async&await을 사용했기에 이 부분만 짚고 넘어가겠다.

router.get("/comment/:postId", async(req, res) => {   // 비동기식으로 쓸 수 있게 해주는  async
  const {postId} = req.params;

  const detail = await Comment.find({postId1: postId})  // db에서 찾아올건데, postId에 대한 번호와 db에 있는 postId1 두개가 서로 같은 것만 찾아 오겠다.
  res.json({detail})    // await이 붙어있는 함수는 await을 만나면  await 먼저 실행하고 다음으로 넘어간다. 
})

어제 코드를 짜면서 내가 이해하기 위해 정리한 주석들.
함수 앞에 async를 붙이고, 비동기 처리할 코드 앞에 await를 붙인다.


구조분해할당

구조분해할당은 객체나 배열의 속성을 해체해 그 값을 변수에 담을 수 있게 하는 표현식이다.

router.delete("/comment/:commentId", async(req, res) => {
  const {password} = req.body     // body에서 입력 받은 password를 객체구조분해할당을 통해 저장
  const {commentId} = req.params  // params에서 입력 받은 :commentId를 객체구조분해할당을 통해 저장
  console.log(password)

  
  let [deleteComment] = await Comment.find({commentId:commentId})   // db commentId와 입력받은 commentId 값이 같을 때 배열구조분해할당을 통해 deleteComment에 저장 ex> [{}] => {}
  console.log(deleteComment)
  commentPassword = deleteComment.password  // deleteComment.password를 통해서 password에 대한 값을 빼내 commentPassword에 저장
  console.log(deleteComment)

이번 과제를 짜면서 내가 사용한 구조분해할당

post-custom-banner

0개의 댓글