오늘은 과제를 시도하고있습니다. 하지만 아직 헷갈리는게 많고 해매기도 합니다.
그래도 일단은 하나씩 쳐보며 시도중입니다.
시도중 postId값을 고유번호로 설정할수 있게 uuid를 찾아봤지만, 과제를 내준 페이지에서는 값이 달라 아닌거 같아 다시 찾아보았습니다.
찾아보니 uuid가 아닌 studio 3t에 저장되는 데이터에 자동으로 _id값과 _v값이 붙게 되는데 그중 _id값이라는것을 알게되었습니다.
postId를 스키마폴더의 post.js파일에 타입과 유무 등 저장해줬는데, 이것때문인지 계속 값이 하나 이상은 들어가지지 않고 오류만 났습니다. 찾아보니 이게 문제인게 맞아서 해당 파일에서 지워줬습니다.
그 뒤로 node_modules에 빨간 줄이 뜨길래 뭔가 했더니 계속 버전이 달라 사용할 수없다며 떳고 왜 그럴까 생각해보니 참고자료에서 처음 깔때는 npm init을 해줘야하는데 npm -i -y를 먼저 해서인가 오류난다고 판단했습니다.
그래서 그냥 전체 파일을 지우고 수업 참고자료를 통해 npm을 설치하는 것부터 차례대로 해 나갔습니다.
저녁시간에 다다라서야 get은 됬지만, post를 어떻게 할까 고민하다가, 제일 처음에 한 개인과제에서 파이썬을 사용할때 _id값은 ObjectId로 해서 가져오는게 생각나 ObjectId로 가져올수 있을 줄 알았는데 되지않았습니다.
찾아보니, 이 특정값만 보여주기 사이트에서 먼저 해당 값들만 보여준다고 처리를한뒤 이 객체이름 변경하기 사이트를 통해 해당 _id이름을 postId로 변경해서 내보내줬습니다.
이것을 사용해 상세페이지 조회에서도 사용했습니다.
상세페이지를 시도해보니 분명 _id값을 제대로 입력했는데도 불구하고 제가 입력한 오류 메세지만 띄웁니다.
일단 뭐가 문제인지 더 살펴보려 합니다.
먼저 어떤 값들이 들어있는지 확인해보니, 객체이름변경후 postId는 Object로 돼있어서 filter로 값을 비교할때 String으로 변경해서 비교해줬습니다.
그랬더니 값이 잘 나오는것을 확인 할 수 있었습니다.
그뒤로 if문을 걸어 _postId값이 없으면 에러 메시지를 내보내려 했습니다.
하는데 처음에는 if문에 !data.length 를하니 바로 들어가져서 설마해서 [ ] 를 씌워서 ![data].length 를 해주니 잘 나왔습니다.하지만 그냥 11을 넣고 실행해보니 if문을 들어가지 않았습니다. 좀 더 봐야할거같습니다.
확인해보니 값이 잘못들어갔을경우 data는 undefined가 됩니다.
그래서 처음에 했던 length값이 아닌 data 자체를 가지고 !data를 해서 값이 없을경우로 하니 잘 나왔습니다.
게시물 수정 테스트를 하는데, 예를 들어 user, password, title은 키와 값을 다 입력해주고, 아래와 같이 content를 키도 값도 입력을 안해주면 에러가 납니다.
에러 메시지 : SystaxError : Unexpected token } in JSON at position
마찬가지로 키값만 입력해도 위와 같은 에러가 나는것을 확인했습니다.
아래 사진과 같이 " " 까지 입력을 해줘야 제가 작성한 코드가 실행되는것을 확인할 수 있었습니다.
그래서 좀더 찾아봐야겠습니다.
왜 오류가 나는지 몰라서 튜터님께 물으러 갔습니다. 확인해보니 일단 첫번째 문제인것은 평소 js를 작성할때 객체를 작성하듯 항상 마지막 값 뒤에는 , 가 붙어서 이번에도 그렇게 작성해서 문제였습니다.
그리고 두번째 문제도 json형식에 맞지않아 생기는 오류였어서 json형식에 맞게 작성을 해줘야합니다.
json 작성하는 것에 대해 좀 더 알아야겠습니다.
이렇게 수정부분도 완성하였고, 이제 삭제부분을 작성하려 합니다.
삭제부분을 작성하는데 body에서 password 값이 일치했을때만 삭제가 되야합니다.
앞서 수정 부분과 같이 find로 먼저 보여줄 값을 내보내고 그뒤로 filter로 params로 받은 _postId값과 일치하면 password값을 비교하고 그렇지않으면 404 를 보내줍니다.
password 비교에서 처음에는 filter로 걸러서 나온 existsPosts에 .password 를 해서 비교하려했지만 콘솔을 찍어보니 existsPosts.passord는 undefined가 나왔습니다. 그래서 existsPosts를 찍어봤더니 배열안에 객체가 있던것이어서 아래 사진과 같이 작성하니 잘 돌아갔습니다.
이렇게 오늘 목표로 했던 게시글 부분을 완성했습니다.
하지만 아직 이해하지 못한게 있는데 스키마폴더에 index.js파일은 node수업에서 다뤘지만 라우터폴더에있는 index.js 파일은 왜 있는지 감이 오지 않습니다.
내일은 댓글 부분을 하려는데 잠시 살펴보니 게시글 부분것도 사용하는거 같다고 느껴집니다. 좀 더 어려울 거 같지만 일단 한번 부딪혀 보려 합니다.
일단 오늘 한것은 깃에 올렸습니다.
머리를 식히기 위해 프로그래머스 문제들을 풀었습니다.
프로그래머스 문제
참고자료
'TIL > 5주차' 카테고리의 다른 글
mysql 설치 및 dbeaver 연동 (0) | 2023.06.16 |
---|---|
node.js 입문주차 개인과제 1, 댓글 작성 중 (0) | 2023.06.15 |
노드 입문 1주차 강의 (0) | 2023.06.13 |
노드 입문 수업 강의 (0) | 2023.06.12 |