유저서비스에 회원가입, 로그인 로직 작성
회원가입은 그냥 유저 생성하는걸로 작성하고 회원정보 조회도 그냥 찾아서 반환하는걸로 간단히 작성
로그인이 어려웠는데 우선 컨트롤러에서는 가장 바깥쪽 레이어 이므로, 로그인 요청을 보내면서 서비스에 있는 사용자로그인 함수를 실행하고 그 결과로 토큰을 받아와 쿠키에 저장하는 로직을 작성했다.
서비스에서는 레포에서 매개변수를 전달해 맞는 데이터를 찾게하고, 미들웨어를 사용해 페이로드로 jwt 생성해 변수에 저장하는 로직을 작성했다. 레포에서는 매개변수에 맞는 데이터 찾기.
로직에 문제가 없는데도 요청에서 자꾸 서버에러가 났는데, 라우터에 get(~) 을 미리 써둔것때문이었다. controller에 없는데 라우터를 미리 선언해놓을 경우 에러가 발생한다는 것을 알게되었다.
게시글은 권한 인가가 어려웠는데, 우선 겪은 에러들
Cannot read properties of undefined (reading create)
-> 해당 프로퍼티가 정의되지 않은 객체 또는 변수를 참조할 때, 객체나 변수의 값이 정의되지 않은 상태에서 프로퍼티를 참조하려 할 때 발생하는 에러
->posts.create() 에서 posts를 못읽는다 -> 모델명 잘못가져와서 수정
content가 undefined다
-> console.log로 찍어보니 content, user 둘 다 안나옴
-> 매개변수를 줄때와 받을 때 개수와 위치가 달라서 id에 user가 들어가고 이런식
-> 매개변수를 맞춰줌
우선 라우터에 미들웨어를 불러와서 게시글 작성, 수정, 삭제에 auth단계를 넘어가게 작성했다.
컨트롤러에는 로컬유저에 저장된 정보를 가져와서 서비스에 변수로 바이데이터랑 같이 넘겨줬었는데, 로컬유저에서 아이디만 구조분해로 가져와서 넘겨주러니 포스트아이디와 헷갈려서 매개변수를 어떻게 맞춰줘야 맞는건지 헷갈렸다. 그래서 구조분해를 안하고 그냥 유저로 가져와서 서비스에서는 유저를 받아서 생성함수에 아이디만 뽑아서 넣어줬다. 레포에서는 아이디를 받아서 유저아이디의 밸류값으로 넣어줬다.