TIL 22일차 - node 입문주차 개인 프로젝트(1)

박찬웅·2023년 2월 27일
0

항해99

목록 보기
27/105

23년 2월 27일

배운 것

오늘부터는 입문 강의 들은 토대로 개인 프로젝트를 시작하였다. 본격적으로 api를 작성하는 것을 시작하였다.

시도 한 것

이번주부터 목요일까지 해야 할 api는 총 9가지로 기간내로 최대한 구현을 하는 것이였다. 그런다음에 git에다 한 것을 올리고, 그걸 토대로 배포까지 해야 하는 과정을 거치게 된다. 중간에 시간도 있는데 이거는 권장적으로 이정도까지 하면 좋다는 것이였고, 꼭 그 안에 해야되는것은 아니였다.

그리고 이번 개인 프로젝트의 폴더와 파일 경로는 바로 아래와 같이 정하였다.

routes는 총 3가지로 게시글 관리하는 index.js, 댓글을 관리하는 comments.js, 그리고 나머지 하나인 index.js는 오늘 저녁 세션 전까지는 이건 대체 쓸곳이 있나 할정도로 쓸일이 전혀 없어보였던 파일이였다. 그래서 우선 이거는 나중에 진행하다보면 알게 되겠지 하면서 오전에는 쭉 사전세팅을 하였다. npm으로 express와 mogoonse를 설치하고 폴더와 파일 경로들도 모두 마무리 하였다. 스키마 폴더에 있는 index.js 통해서 mongodb 연결 설정 해주고, 마지막으로 app.js으로 서버 연결까지 마무리 하였다. 이렇게 오전은 준비세팅만 하는데만 시간이 지났다.

그렇게 점심을 먹고 이제 본격적으로 api 작성을 시작하였다. 1번 API인 전체 게시글 목록 API는 그렇게 어렵지 않았다. 다만 이거는 내가 만든 데이터에서 뽑아서 만드는게 아니라 이미 코드 안에 있는 api를 가져와다 출력하는 단순한 미션이였다. 그리고 날짜 기준으로 내림차순으로 맞추라고 했지만 사실 이미 업로드 하면 새로운 것이 위로 올라오기에 굳이 구현을 안해도 되었기에 큰 문제는 없었다. 어떻게 기존에 있는 데이터를 잘 가져오는지만 테스트 하는 것이라서 최종적으로 완성 할때는 전혀 필요가 없는 코드들이라 다음 2번부터 할 때는 해당 작성 한 코드들은 모두 지웠다. 강의노트 참고해서 했으면 크게 어렵지는 않았다.

그렇게 점심을 먹고 2번 게시글 작성 API를 진행하였다. 2번 같은 경우에는 상당히 시간이 걸렸다. 역시 강의코드를 참고만 했으면 무난하게 했던 것이라서 좀 고민은 하였지만 2시간만에 구현을 하였다. 그렇게 정상적으로 post는 무사히 하였지만 팀원 중 한분이 처음 post 하면 정상적으로 되는데, 2번째 POST 하려고 하면 e11000 duplicate key error collection이라는 애러가 나면서 POST가 전혀 안되는 것이였다. 팀원 한 분이 여기서 막혀서 팀 모두가 이 문제를 해결하려고 본인들이 작성한 코드를 비교하는건 물론 구글링도 해보는 등 모두 찾아보려고 노력을 하였다. 하지만 30분동안 결국 해내지 못했다가 저녁을 빨리 먹고 오니 기술매니저님이 딱 오셔서 원인을 딱 집어 줬는데 그게 정말로 초 간단한 5초컷 해결이였다는 것이였다.
해결 하는 방법은 studio 3T 가서 본인이 추가된 post 데이터베이스 가서 우클릭을 누르고 drop collection 누르면 해결되었다. 이걸 누르면 처음 post 한거는 지워지지만 다시 post 연달아 두번 하면 바로 딱 되었다. 2번 API는 나는 잘 되었지만, 팀원분 해결해주느라 여기서 시간이 많이 지체되었었다.

3번 게시글 조회 API는 이거는 내가 직접 시도 하려고 했었으나 나보다 먼저 더 진행한 팀원 한분이 질문을 했었다. 이게 게시글 조회는 내가 POST한 데이터들을 보여주는 것이였는데 우리는 지금까지 이거를 1번에 있던 원래 자체적으로 있던 데이터를 뽑는걸로 착각을 하였다. 알고보니 이렇게 하는 것이 아니였고 아까 2번 게시글 작성한 API를 토대로 그걸 보여주는 것이였다. 나는 이거는 시도를 하지 못하고 딱 기술매니져님과 함께 모두가 같이 한번 알고리즘 테스트 하는 생각으로 직접 같이 구현하였다. 1시간동안 어떻게 해야할지 계속 팀원들과 고민하면서 마침내 3번도 전부 제대로 마무리 되었다.

기술매니저님의 순회를 끝나고 바로 세션 특강이 있어서 1시간 15분동안 express에 대해서 설명을 하였다. 강의 노트에서 이미 알려줬지만, 제대로 코드를 적으면서 적었는데, 바로 이때 그동안 필요 없다고 생각했던 라우터 경로 index.js를 어떻게 사용하는지를 알려주게 되었다. 그래서 그 해당 세션 강의를 마치고 4번 API를 하는 것보다 저걸 먼저 시도를 해 보았다. 특강에서 캡쳐한 코드를 참고해서 작성은 했는데 뭔가 중첩적으로 적은 코드들이 많아서 가독성이 넘 안좋아보였다. 그래서 팀원들이랑 뭔가 코드를 지우면서 3번 API로 계속 GET 테스트를 해봤는데 계속 404 에러가 떴었다. 근데 오늘 세션 특강 해주신 기술매니져님이 시간이 남았다고 특별히 막혔던 것 물어보라고 해서 나는 해당 질문을 하였다. index.js 라우터 문제는 전혀 없었는데 알고보니 post.js 라우터에서 문제가 있었다.

router.get("/posts", async (req, res) => {});

여기서 posts를 추가로 적는 바람에 posts/posts 두번 입력해야 비로소 제대로 뜨는 것을 알게 되었다. 그래서 저 posts를 제거를 해야 정상적으로 작동을 하였다. 즉 index.js 라우터를 설정하게 되면 일일히 귀찮지 않게 '/'만 작성하면 굳이 '/posts'를 작성하지 않아도 된다는 것을 알게 되었다. 이렇게 까지 하니까 자정이 되었고 과제의 1/3 정도는 진행을 하고 마췄다.

해결

그래서 오늘 내가 한 것은 1~3번 API까지만 했고 거기에 index.js 라우터 설정까지 마무리 하였다.

알게 된 점

오늘 본격적으로 해본 결과는 모르는 거 있으면 팀원들에게 질문을 최대한 많이 하는 것이였다. 사실 오늘 구현을 제대로 많이 못한것은 기술매니저님도 2번이나 오시고, 세션 특강도 있었지만, 늦은 오후에 운영 매니저님이 향해를 했던 선배로서 어떻게 하면 제대로 잘 할수 있을지 조언을 해 주셨다. 여기서 남들보다 잘 못해도 질문을 하면 되는 것이고, 우리팀에서도 다 모르면 다른 조 가서도 물어보는 것이였다. 그리고 오늘 제일 놀랐던 것은 아까 mongodb에러 난거 저녁시간에 해결했었는데, 거짓말처럼 다른 조 팀원 한 분이 오늘 늦은 밤에 우리가 겪었던 애러를 기술매니저님한테 질문하는 분이 있었다. 바로 이 오류는 우리 팀이 알려줬고, 5초만에 해결되는 문제를 바로 알려주니까, 허탈하셨지만 그래도 우리가 겪었으니 남들에게 알려 줄 수 있구나를 깨닫게 되었다.
처음에는 이걸 언제 다 마무리 할 수 있을까 엄청 걱정하기도 했는데 비록 아직 많이 진행 하지는 못했어도 할 수 있는 데 까지 최대한 많이 구현해보려는 노력도 중요하였다. 오늘은 유독 뭔가 많은 교훈을 얻었던 날이였다.

앞으로 할 일

내일도 계속해서 지옥의 API 작성을 하게 될 것이기에 여전히 막막하지만 팀원들과 함께 계속해서 버티고 잘 해보려고 한다.

profile
향해 13기 node.js 백앤드

0개의 댓글